JavaScript数组方法总结

数组方法整理

方法分类 方法名 语法 描述 返回 是否改变原数组
元素的添加和删除 push arr.push(item1[,item2]) 把一个或多个元素添加到数组的末尾 新数组的长度 yes
unshift arr.unshift(item1[,item2]) 把一个或多个元素添加到数组的头部 新数组的长度 yes
pop arr.pop() 移除数组最后一个元素 移除的那个最后的元素 yes
shift arr.shift() 移除数组第一个元素 移除的那个第一个元素 yes
splice arr.splice(start[,deleteCount[,item1[,item2[...]]]]) 在任意位置添加或删除元素 由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。 yes
数组合并 concat arr1.concat(value1[,value2[..]]) 向一个数组后部添加数组或元素 新的合并后的数组 no
数组切片 slice arr.slice([begin[,end]]) 从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象 这个拷贝来的新数组对象 no
迭代器函数 every arr.every(cb(item[,index[,arr]]){}[,thisArg]) 测试数组的所有项是否都通过了指定函数的测试,有一项结果为false则为false true/false no
some arr.some(cb(item[,index[,arr]])[,thisArg]) 测试数组中是否存在通过指定函数的测试的项,有一项结果为true则为true true/false no
foreach arr.foreach(cb(item[,index[,arr]]){}[,thisArg]) 对数组的每一项执行一次提供的函数。 无返回值 no
map arr.map(cb(item[,index[,arr]]){}[,thisArg]) 创建由该数组中的每一项都调用指定函数后的返回值组成的新数组 每一项的返回值组成的新数组 no
filter arr.filter(cb(item[,index[,arr]]){}[,thisArg]) 创建由该数组中的每一项都调用指定函数后返回true的项组成的新数组 返回true的项组成的新数组 no
reduce arr.reduce(cb(accumulator,currentValue[,currentIndex[,arr]]){}[,initialValue]) 函数参数不断返回将被叠加到累加器上的值,reduce方法停止后返回这个累加器的最终值 累加器的最终值 no
排序 reverse arr.reverse() 就地颠倒数组中元素的顺序 颠倒后的数组 yes
sort arr.sort([compareFunc]) 就地对数组中的元素进行排序,默认是根据字符串unicode升序排列 排序后的数组 yes
搜索 indexOf arr.indexOf(searchItem[,fromIndex=0]) 在数组中查找给定元素的第一个索引 首个被找到的给定元素的索引,如果没找到则返回-1 no
lastIndexOf arr.lastIndexOf(searchItem[,fromIndex=arr.length-1]) 在数组中查找给定元素的最后一个索引 从后向前首个被找到的给定元素的索引,如果没找到则返回-1 no
(es7)includes arr.includes(searchItem) 判断数组中是否存在某个元素 true/false no
(es6)find arr.find(cb(item[,index[,arr]]){}[,thisArg]) 返回数组中满足指定函数的第一个元素 数组中满足指定函数的第一个元素/undefined no
(es6)findIndex arr.findIndex(cb(item[,index[,arr]]){}[,thisArg]) 返回数组中满足指定函数的第一个元素的索引 满足指定函数的第一个元素的索引/-1 no
输出为字符串 toString arr.toString() 得到由数组元素组成的字符串,由逗号分隔。相对于arr.join(',') 由数组元素组成的、逗号分隔的字符串 no
join arr.join(separator) 将数组通过指定分隔符连接成字符串 由数组元素组成、指定分隔符连接的字符串 no
元素的填充 (es6)copyWithin arr.copyWithin(target[,start[,end]]) 浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小。 改变后的数组 yes
(es6)fill arr.fill(value[,start[,end]]) 用一个固定值填充一个数组中从起始索引到终止索引内的全部元素 修改后的数组 yes
es6迭代器 (es6)entries arr.entries()
entries.next().value
entries.next().done
返回一个新的数组迭代器,在迭代器上调用next()可得到{value:[index,item],done:Bool} 包含每项索引的键值对信息的数组迭代器 no
(es6)keys arr.keys() 返回一个新的数组迭代器,在迭代器上调用next()可得到{value:index,done:Bool} 包含每项索引信息的数组迭代器 no
(es6)values arr.values() 返回一个新的数组迭代器,在迭代器上调用next()可得到{value:item,done:Bool} 包含每项值信息的数组迭代器 no
Array类型上(非实例上)的方法 (es6)from Array.from(arrLike[,mapCb[,thisArg]]) 从一个类似数组或可迭代对象中创建一个新的数组实例。 新的数组实例 no
isArray Array.isArray(obj) 检测某个对象是否是Array,如果对象是Array则返回true,否则返回false true/false no
(es6)of Array.of(item1[,item2[,item3[,..]]]) 创建一个具有可变数量项的新数组实例 新数组实例 no

参考资料

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

《JavaScript数据结构与算法》2.7

原文地址:https://www.cnblogs.com/Bonnie3449/p/9358852.html