数组方法整理
方法分类 | 方法名 | 语法 | 描述 | 返回 | 是否改变原数组 |
---|---|---|---|---|---|
元素的添加和删除 | 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