JS中常用的数组处理函数
JS对数组处理提供了许多方法,对目前在开发中经常用到且强大的方法做一个学习总结。
1.splice()
功能:splice() 方法用于添加或删除数组中的元素,这种方法会改变原始数组,返回被删除的元素。
参数:
splice(index,howmany,item1,..., itemX)
index:添加/删除的元素下标,使用负数可从数组结尾处规定位置。必须。
howmany:要删除的元素个数,为0则不删除元素。必须。
item:向数组中添加的元素,可以为多个。非必须。
JS code example
2.sort
功能:可以对数组元素进行排序,默认排序顺序是根据字符串Unicode码点。
语法:arr.sort(compareFunction) 。
- 不指明compareFunction,那么元素会按照转换为的字符串的Unicode位点进行排序。
- 指明compareFunction,数组将按照compareFunction返回值排序。
compareFunction(a, b)小于0,则a排在b前面。
compareFunction(a, b)大于0,则a排在b后面。
等于0,a b顺序不变,
JS code example
3.foreach map filter every some
foreach, map, filter, every, some 具有相同点:不主动改变原数组,它们都遍历数组每一项,且每次循环时执行传入的回调函数。回调函数为:
function (item,index,array){}
/**
* item:循环的当前元素
* index:当前元素下标
* array:原数组
* **/1.foreach map
foreach每次循环执行回调函数,且没有返回值,类似 for 循环。map 会根据回调函数返回的处理结果,生成一个新数组。
JS code example
2.filter
filter过滤元素,会将满足回调函数条件的元素筛选出来组成为一个新数组。
JS code example
3.every some
every与some有相同之处,它们均根据回调函数判断遍历元素是否符合条件,区别在于 every 当所有元素满足条件才返回true,否则返回false;而some则是存在元素满足条件则返回true,否则返回false。
JS code example
4.reduce
reduce() 方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。 reduce() 函数本身不改变原数组,除非函数内部有对原数组的修改。
语法:reduce(callbackFn, initialValue)
参数 :
callbackFn:为数组中每个元素执行的函数。其返回值将作为下一次调用 callbackFn 时的 accumulator 参数。对于最后一次调用,返回值将作为 reduce() 的返回值。该函数被调用时将传入以下参数:
- accumulator:上一次调用 callbackFn 的结果。在第一次调用时,如果指定了 initialValue 则为指定的值,否则为 array[0] 的值。
- currentValue:当前元素的值。在第一次调用时,如果指定了 initialValue,则为 array[0]的值,否则为array[1]。
- currentIndex:currentValue 在数组中的索引位置。在第一次调用时,如果指定了 initialValue 则为 0,否则为 1。
- array:原数组。
initialValue(可选):用于指定第一次accumulator的值,是否指定则会影响currentValue,currentIndex的值,如上。
用法:
JS code example
js中还有更多数组处理的函数,学习可查看此链接。
5. push pop unshift shift
改变原数组,添加后返回新长度,删除后返回被删除的元素。
push:向数组的末尾添加一个或多个元素,并返回新的长度。
pop:删除数组的最后一个元素,并返回该元素。
unshift:向数组的开头添加一个或更多元素,并返回新的长度。
shift:删除数组的第一个元素,并返回该元素。