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

163 阅读3分钟

js中数组中方法

1. Array.isArray()

Array.isArray方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。

2.数组方法中会改变原数组的方法

2.1 ### push()

`push`方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

2.2 ### pop()

`pop`方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。

2.3 ### shift()

`shift()`方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。

2.4 ### unshift()

`unshift()`方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

2.5 ### reverse()

`reverse`方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组。

2.6 ### splice()

`splice()`方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。`splice`的第一个参数是删除的起始位置(从0开始),第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。

2.7 ### sort()

`sort`方法对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。

3. 不会改变原数组的方法

3.1 ### slice()

`slice()`方法用于提取目标数组的一部分,返回一个新数组,原数组不变。它的第一个参数为起始位置(从0开始,会包括在返回的新数组之中),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员。

3.2 ### map()

`map()`方法接受一个函数作为参数。该函数调用时,`map()`方法向它传入三个参数:当前成员、当前位置和数组本身,原数组没有变化,会返回一个新数组。

3.3 ### forEach()

`forEach()`的用法与`map()`方法一致,参数是一个函数,该函数同样接受三个参数:当前值、当前位置、整个数组,`forEach()`方法不返回值.

3.4 ### filter()

`filter()`方法用于过滤数组成员,满足条件的成员组成一个新数组返回。它的参数是一个函数,所有数组成员依次执行该函数,返回结果为`true`的成员组成一个新数组返回。该方法不会改变原数组。

3.5 ### join

`join()` 方法用于把数组中的所有元素转换一个字符串,元素是通过指定的分隔符进行分隔的。

3.6 ### reduce(),reduceRight()

方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

3.7 ### findIndex,find

`findIndex` 接收一个测试函数,也可以叫做条件函数,最终返回满足该测试函数的元素的索引位置,如果没有找到符合条件的元素,则返回`-1`。如果满足条件的有多个,那么只会返回第一个满足条件的元素索引。

3.8 concat()

`concat`方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。

3.9 ### some(),every()

`some`方法是只要一个成员的返回值是`true`,则整个`some`方法的返回值就是`true`,否则返回`false``some`方法是只要一个成员的返回值是`true`,则整个`some`方法的返回值就是`true`,否则返回`false`