JavaScript中的Array方法汇总(按照是否修改原数据的方式)

JavaScript中的Array方法汇总:按照是否修改原数据的方式
数组是我们在js经常用到的数据类型,不好好整理一下怕是容易记混,很多同学傻傻的splice和slice分不清楚,今天就带大家理一下Array中的方法。

方法名称 简介 是否修改原数据 返回值类型 注意
Array.prototype.concat() **concat()** 方法用于合并两个或多个数组。 数组 const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
Array.prototype.copyWithin() **copyWithin()** 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它 数组 const array1 = ['a', 'b', 'c', 'd', 'e'];

// copy to index 0 the element at index 3
console.log(array1.copyWithin(0, 3, 4));
Array.prototype.entries() 返回一个新的Array Iterator对象 迭代器对象
Array.prototype.every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。 布尔值 在方法内修改函数入参,不会修改原数据
Array.prototype.filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素 布尔值 注意,在方法内修改入参不会修改原数据
Array.prototype.find() 返回数组中满足提供的测试函数的第一个元素的值,否则返回undefined 对象
Array.prototype.findIndex() **indIndex()**方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。 数字
Array.prototype.flat() **flat()** 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 数组 const arr1 = [0, 1, 2, [3, 4]];

console.log(arr1.flat());
// expected output: [0, 1, 2, 3, 4]
Array.prototype.flatMap() **flatMap()** 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。 数组 可以理解成map + flat执行后的结果
Array.prototype.forEach() **forEach()** 方法对数组的每个元素执行一次给定的函数。 没有返回值 在方法内修改传入参数不会修改原数据
Array.from() **Array.from()** 方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。 数组 console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]
Array.prototype.includes() **includes()** 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false 布尔值
Array.prototype.indexOf() **indexOf()**方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 数字
Array.isArray() Array.isArray() 用于确定传递的值是否是一个 Array。 布尔值
Array.prototype.join() **join()** 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。 字符串
Array.prototype.keys() **keys()** 方法返回一个包含数组中每个索引键的**Array Iterator**对象。 数组
Array.prototype.lastIndexOf() **lastIndexOf()** 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。 数字
Array.prototype.map() **map()** 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。 数组
Array.of() **Array.of()** 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。 数组 Array.of(2); // [2]
Array.prototype.reduce() **reduce()** 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。 对象
Array.prototype.reduceRight() **reduceRight()** 方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。 对象
Array.prototype.slice() **slice()** 方法返回一个新的数组对象,这一对象是一个由 beginend 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。 数组
Array.prototype.some() **some()** 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。 布尔值
Array.prototype.sort() sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的 数组
Array.prototype.toLocaleString() **toLocaleString()** 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 ",")隔开。 字符串
Array.prototype.toString() **toString()** 返回一个字符串,表示指定的数组及其元素。 字符串
Array.prototype.values() values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值 数组
Array.prototype.fill() **fill()** 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。 数组
Array.prototype.pop() **pop()**方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。 数组
Array.prototype.push() **push()** 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。 数组
Array.prototype.reverse() **reverse()** 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。 数组
Array.prototype.shift() **shift()** 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。 数组
Array.prototype.splice() splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。 数组
Array.prototype.unshift() unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。 数组
【JavaScript中的Array方法汇总(按照是否修改原数据的方式)】注意,即便有的方法即使是返回了一个新数组,可这个新数组也不一定是被完全复制的,万一里面有个对象呢,嘿嘿嘿,不就共享内存了。总而言之,言而总之,Array中只能实现简单数据类型的数组的拷贝(也就是浅拷贝)

    推荐阅读