1.不会改变原来数组的有:

concat()

连接两个或更多的数组,并返回结果。

 如果arr.concat()里面不放数组参数,则会浅拷贝arr

如果参数不是数组,它不会递归到嵌套数组参数中

数据类型如字符串,数字和布尔(不是 String,Number 和 Boolean 对象):concat 将字符串和数字的值复制到新数组中

every()

检测数组元素的每个元素是否都符合条件。

callback 被调用时可传入三个参数:元素值,元素的索引,原数组

/ 箭头函数
every((element) => { /* … */ } )
every((element, index) => { /* … */ } )
every((element, index, array) => { /* … */ } )// 回调函数
every(callbackFn)
every(callbackFn, thisArg)// 内联回调函数
every(function(element) { /* … */ })
every(function(element, index) { /* … */ })
every(function(element, index, array){ /* … */ })
every(function(element, index, array) { /* … */ }, thisArg)

打印结果

some()

检测数组元素中是否有元素符合指定条件。

参数和every一样,不同是some全假为假

some() 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some() 将会立即返回 true。否则,some() 返回 false

filter()

检测数组元素,并返回符合条件所有元素的数组。

// 箭头函数
filter((element) => { /* … */ } )
filter((element, index) => { /* … */ } )
filter((element, index, array) => { /* … */ } )// 回调函数
filter(callbackFn)
filter(callbackFn, thisArg)// 内联回调函数
filter(function(element) { /* … */ })
filter(function(element, index) { /* … */ })
filter(function(element, index, array){ /* … */ })
filter(function(element, index, array) { /* … */ }, thisArg)

indexOf()

搜索数组中的元素,并返回它首次出现的位置。

参数  searchElement  要查找的元素

fromIndex         开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找,-2 表示从倒数第二个元素开始查找,以此类推。注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于 0,则整个数组都将会被查询。其默认值为 0。

const array = [2, 9, 9];
array.indexOf(2);     // 0
array.indexOf(7);     // -1
array.indexOf(9, 2);  // 2    从第二个开始查找
array.indexOf(2, -1); // -1  // 从倒数第一个开始查找
array.indexOf(2, -3); // 0   //-3表示从倒数第三个开始查找

join()

把数组的所有元素放入一个字符串。

指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。如果省略,数组元素用逗号(,)分隔。如果 separator 是空字符串(""),则所有元素之间都没有任何字符

toString()

把数组转换为字符串,并返回结果。

function Dog(name) {this.name = name;
}const dog1 = new Dog('Gabby');Dog.prototype.toString = function dogToString() {return `${this.name}`;
};console.log(dog1.toString());
// expected output: "Gabby"

lastIndexOf()

返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

两个参数

searchElement

被查找的元素。

fromIndex

从此位置开始逆向查找。默认为数组的长度减 1(arr.length - 1),即整个数组都被查找。如果该值大于或等于数组的长度,则整个数组会被查找。如果为负值,将其视为从数组末尾向前的偏移。即使该值为负,数组仍然会被从后向前查找。如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。

var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
index = array.lastIndexOf(7);
// index is -1
index = array.lastIndexOf(2, 3);
// index is 3
index = array.lastIndexOf(2, 2);/
// index is 0
index = array.lastIndexOf(2, -2);
// index is 0
index = array.lastIndexOf(2, -1);
// index is 3

map()

通过指定函数处理数组的每个元素,并返回处理后的数组。

参数

callbackFn

生成新数组元素的函数,使用三个参数:

currentValue

callbackFn 数组中正在处理的当前元素。

index

callbackFn 数组中正在处理的当前元素的索引。

array

map 方法调用的数组。

// 箭头函数
map((element) => { /* … */ })
map((element, index) => { /* … */ })
map((element, index, array) => { /* … */ })// 回调函数
map(callbackFn)
map(callbackFn, thisArg)// 内联回调函数
map(function(element) { /* … */ })
map(function(element, index) { /* … */ })
map(function(element, index, array){ /* … */ })
map(function(element, index, array) { /* … */ }, thisArg)

如果有以下情形,则不该使用 map

  • 你不打算使用返回的新数组;或
  • 你没有从回调函数中返回值

slice()

选取数组的的一部分,并返回一个新数组。

slice()
slice(start)
slice(start, end)

begin 可选

提取起始处的索引(从 0 开始),从该索引开始提取原数组元素。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略 begin,则 slice 从索引 0 开始。如果 begin 超出原数组的索引范围,则会返回空数组。

end 可选

提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。slice(1,4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素(索引为 1, 2, 3 的元素)。如果该参数为负数,则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。如果 end 被省略,则 slice 会一直提取到原数组末尾。如果 end 大于数组的长度,slice 也会一直提取到原数组末尾。

会返回一个浅复制了原数组中的元素的一个新数组

valueOf()

返回数组对象的原始值。

valueOf()

this 值,将其转换为一个对象。

find()

返回数组中符合测试函数条件的第一个元素

callbackFn

在数组每一项上执行的函数,接收 3 个参数:

element

当前遍历到的元素。

index

当前遍历到的索引。

array

数组本身。

// 箭头函数
find((element) => { /* … */ } )
find((element, index) => { /* … */ } )
find((element, index, array) => { /* … */ } )// 回调函数
find(callbackFn)
find(callbackFn, thisArg)// 内联回调函数
find(function(element) { /* … */ })
find(function(element, index) { /* … */ })
find(function(element, index, array){ /* … */ })
find(function(element, index, array) { /* … */ }, thisArg)

数组中第一个满足所提供测试函数的元素的值,否则返回 undefined

reduce()

可以作为累加器

个“reducer”函数,包含四个参数:

previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]

currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]

currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。array:用于遍历的数组。

// 箭头函数
reduce((previousValue, currentValue) => { /* … */ } )
reduce((previousValue, currentValue, currentIndex) => { /* … */ } )
reduce((previousValue, currentValue, currentIndex, array) => { /* … */ } )reduce((previousValue, currentValue) => { /* … */ } , initialValue)
reduce((previousValue, currentValue, currentIndex) => { /* … */ } , initialValue)
reduce((previousValue, currentValue, currentIndex, array) => { /* … */ }, initialValue)// 回调函数
reduce(callbackFn)
reduce(callbackFn, initialValue)// 内联回调函数
reduce(function(previousValue, currentValue) { /* … */ })
reduce(function(previousValue, currentValue, currentIndex) { /* … */ })
reduce(function(previousValue, currentValue, currentIndex, array) { /* … */ })reduce(function(previousValue, currentValue) { /* … */ }, initialValue)
reduce(function(previousValue, currentValue, currentIndex) { /* … */ }, initialValue)
reduce(function(previousValue, currentValue, currentIndex, array) { /* … */ }, initialValue)

2.会改变原来数组的有:

pop()

删除数组的最后一个元素并返回删除的元素。

push()

向数组的末尾添加一个或更多元素,并返回新的长度。

shift()

删除并返回数组的第一个元素。

unshift()

向数组的开头添加一个或更多元素,并返回新的长度。

reverse()

反转数组的元素顺序。

sort()

对数组的元素进行排序。

splice()

用于插入、删除或替换数组的元素。

数组方法中会更改原数组,不会更改原数组(详细)相关推荐

  1. JS数组方法中哪些会改变原数组,哪些不会?

    前言 作为一名前端开发人员,我们每天都会与数组打交道.JS 也提供了很多操作数组的原生 API 供我们调用.在这些方法里面,有的方法会改变原数组,有些不会改变原数组.别看这一点小小的区别,往往会造成巨 ...

  2. JavaScript 常用数组方法及使用技巧「数组的力量隐藏在数组方法中,必收藏」

    JavaScript 数组的力量隐藏在数组方法中. 没错!如果你只知道用数组,但是不知道数组的这些方法怎么用,那么你就不是真正的懂他. 正餐开始,来看看 JavaScript 中有哪些常用的数组方法! ...

  3. 数组方法中哪些会更改原数组,哪些不会更改原数组。

    1.不会改变原来数组的有: concat()---连接两个或更多的数组,并返回结果. every()---检测数组元素的每个元素是否都符合条件. some()---检测数组元素中是否有元素符合指定条件 ...

  4. 数组方法中,会改变原数组、不会改变原数组的方法有哪些?

    会改变原数组: 1 添加元素类:(返回新的长度) push() 把元素添加到数组尾部 unshift() 在数组头部添加元素 2 删除元素类:(返回的是被删除的元素) pop() 移除数组最后一个元素 ...

  5. php 遍历对象数组,js中遍历对象(5种)和遍历数组(6种)的方法总结

    本篇文章给大家带来的内容是关于js中遍历对象(5种)和遍历数组(6种)的方法总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.遍历对象方法 1.for...in 遍历输出的是对 ...

  6. python怎么输出一个数组_python中实现将多个print输出合成一个数组

    比如有下面一段代码: for i in range(10): print ("%s" % (f_list[i].name)) 该代码段的执行,会生成如下的10行"name ...

  7. c#将字符串转换为数组_C#中怎样把一个字符串转换成字符形数组?

    展开全部 例: stringa="abcdefg"; string[]b=newstring[a.Length]; for(inti=0;i { b[i]=a.Substring( ...

  8. python同时输出两个数组_python中实现将多个print输出合成一个数组

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. js中数组方法不会影响原数组的方法

    不会改变原数组方法: concat(),用于连接两个或多个数组: every().用于检测数组 所有元素是否都符合原始数组: filter(),创建一个新的数组,新数组的元素是通过检查指定数组中符合条 ...

最新文章

  1. 023_Jedis的发布和订阅
  2. mysqlsla日志分析工具
  3. 通过Zuul上传文件,禁用Zuul的Filters
  4. 李春雷 | 夜宿棚花村
  5. JVM(六)为什么新生代有两个Survivor分区? 1
  6. Python中使用PhantomJS抓取Javascript网页数据
  7. mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构
  8. 禅道下载docker安装
  9. ANSYS apdl命令流笔记15-------模态分析
  10. 快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)
  11. mds is damaged
  12. 转一篇有关竞争对手LANDESK CEO的故事
  13. 明解C语言入门篇_第10章_指针
  14. 原生js实现小方块拖拽
  15. 架构-分布式与集群的区别
  16. Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
  17. 小蚁4K运动相机实现APP通过路由器连接控制拍照
  18. google账号登录第三方平台实现
  19. server接收dtu透传代码_深入ASP.NET Core源代码之 - Web Server Kestrel
  20. Arduino蜂鸣器《Viva La Vida》一小段旋律

热门文章

  1. linux防ddos攻击脚本,Linux IPTables防DDOS攻击Shell脚本
  2. 20年3月27日,Github被攻击。我的GitPage博客也挂了,紧急修复之路,也教会你搭建 Jekyll 博客!
  3. Springboot 工具类@Value取不到值
  4. Mysql 利用存储过程 实现单据号码(单号)生成器(万能版)
  5. ios 反编译 破解
  6. spinningup环境搭建
  7. javamail发送邮件到qq邮箱图片不能显示问题
  8. 刚才发现微软拼音-简洁2010是目前比较适合程序员的输入法
  9. CENTOS 7 添加黑名单禁止IP访问服务器
  10. 软件工程概念总结-期末重点-(简单中文+英文关键词)-第一部分软件过程(第1-6章)-罗杰S普莱斯曼