JavaScript中Array方法总结:根据是否修改原始数据记住,很多同学分不清splice和slice的区别,那么今天就带大家过一遍Array中的方法。方法名介绍是否修改原始数据返回值类型注意Array.prototype.concat()**concat()**方法用于合并两个或多个数组。无数组constarray1=['a','b','c'];
constarray2=['d','e','f'];
constarray3=array1.concat(array2);Array.prototype.copyWithin()**copyWithin()**方法shallow将数组的一部分复制到同一数组中的另一个位置,并返回它或数组constarray1=['a','b','c','d','e'];
//将索引3处的元素复制到索引0
console.log(array1.copyWithin(0,3,4));Array.prototype.entries()返回一个新的ArrayIterator对象没有迭代器对象Array.prototype.every()方法测试数组中的所有元素是否可以通过指定函数的测试。它返回一个布尔值。无布尔值方法中修改函数入参,不会修改原有数据Array.prototype.filter()方法新建一个数组,其中包含提供的函数实现的测试的所有元素无布尔值注意,修改方法中输入参数不会修改原始数据Array.prototype.find()返回数组中第一个满足提供的测试函数的元素的值,否则返回undefinedNoobjectArray.prototype.findIndex()**indIndex()**方法返回数组中满足提供的测试函数的第一个元素的索引。如果没有找到相应的元素,则返回-1。无编号Array.prototype.flat()**flat()**方法会按照指定的深度递归遍历数组,并将遍历的子数组中的所有元素和元素组合成一个新的数组并返回。无数组constarr1=[0,1,2,[3,4]];
console.log(arr1.flat());
//预期输出:[0,1,2,3,4]Array.prototype.flatMap()**flatMap()**方法首先使用映射函数映射每个元素,然后将结果压缩到一个新数组中。它几乎与附加到深度为1的平面的地图相同,但是当组合到一个方法中时,flatMap通常会稍微高效一些。不,数组可以理解为执行map+flat的结果Array.prototype.forEach()**forEach()**方法对数组的每个元素执行一次给定的函数。无返回值修改方法中的传入参数不会修改原始数据Array.from()**Array.from()**方法为类数组或可迭代对象创建数组实例的新浅表副本。无数组console.log(Array.from('foo'));
//预期输出:Array["f","o","o"]
console.log(Array.from([1,2,3],x=>x+x));
//预期输出:Array[2,4,6]Array.prototype.includes()**includes()**方法用于判断一个数组是否包含指定值,根据情况判断,如果包含则返回true,否则返回false。NoBooleanArray.prototype.indexOf()**indexOf()**方法返回数组中可以找到给定元素的第一个索引,如果不存在则返回-1。nonumberArray.isArray()Array.isArray()用于判断传入的值是否为数组。没有BooleanArray.prototype.join()**join()**方法将数组(或类数组对象)的所有元素连接到一个字符串中并返回该字符串。如果数组只有一项,则返回该项时不带分隔符。无字符串Array.prototype.keys()**keys()**方法返回一个**ArrayIterator**对象,其中包含数组中的每个索引键。无数组Array.prototype.lastIndexOf()**lastIndexOf()**方法返回数组中指定元素(即有效的JavaScript值或变量)的最后一个索引,如果不存在则返回-1。从数组的后面往前看,从fromIndex开始。无编号Array.prototype.map()**map()**方法创建一个新数组,其结果是数组中的每个元素都是一次调用所提供函数的返回值。无数组Array.of()**Array.of()**方法使用可变数量的参数创建一个新的Array实例,无论参数的数量或类型如何。无数组Array.of(2);//[2]Array.prototype.reduce()**reduce()**方法对数组中的每个元素执行你提供的reducer函数(按升序排列),并将其结果聚合成一个单一的返回值.没有对象Array.prototype.reduceRight()**reduceRight()**方法接受一个函数作为累加器并将数组的每个值(从右到左)减少为单个值。无对象Array.prototype.slice()**slice()**方法返回一个新的数组对象,它是由begin和end(包括begin,不包括end)确定的原始数组的浅拷贝。原数组不会改变。没有数组Array.prototype.some()**some()**方法测试数组中是否至少有1个元素通过提供的函数测试。它返回一个布尔类型的值。否BooleanArray.prototype.sort()sort()方法使用就地算法对数组的元素进行排序并返回数组。默认的排序顺序是将元素转换为字符串然后比较它们的UTF-16编码单元值序列时构造的数组Array.prototype.toLocaleString()**toLocaleString()**返回一个表示该元素的字符串。数组中的元素将使用它们各自的toLocaleString方法转换为字符串,并且这些字符串将由特定于语言环境的字符串(例如逗号“,”)分隔。否StringArray.prototype.toString()**toString()**返回表示指定数组及其元素的字符串。没有字符串Array.prototype.values()values()方法返回一个新的ArrayIterator对象,该对象包含数组每个索引的值没有ArrayArray.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()方法将一个或多个元素添加到数组的开头并返回数组的新长度(该方法修改了原始数组)。它是一个数组。请注意,即使某些方法返回一个新数组,也不一定会完全复制新数组。万一里面有对象,嘿嘿,这就是共享内存了。总而言之,Array中只能复制(即浅拷贝)简单数据类型的数组
