最近在看js描述的数据结构记录一下js数组操作中的一些方法
大致分为两类吧,一种是产生新数组、另一种是不产生新数组。
第一种是不产生新数组的方法
1.forEach()
需要一个方法作为参数,对数组中每个元素使用这个方法
但是这个在遍历过程中不能中途中断
2.every()
参数:一个返回值是布尔类型的方法
返回值: 布尔值 true/false
说明:和forEach()一样,every()也会对数组中每一个元素使用作为参数的方法。当对于所有数组元素使用该方法的返回值都是true时,every()返回true;反之返回false
3.some()
参数:一个返回值是布尔类型的方法
返回值: 布尔值 true/false
说明:此方法和every刚好相反。只要数组中有一个元素返回时true,则some()返回true;反之,返回false
4.reduce()
参数:接受一个方法,该方法两个参数argA,argB
返回值: 一个累加值
说明:此方法会重一个累加值开始,不断对累加值和数组中的后续元素调用参数方法,直到最后一个元素后返回累加值。该累加值就是argA;argB则是每一次参加计算的数组元素
function add(argA, argB) {
return argA + argB;
}
var list = [1,2,3,4,5];
var sum = list.reduce(add);
// 此时sum的值就是15
注意 上面计算会从数组第一个元素计算到最后一个元素,与之相反的一个方法就是reduceRight(),
这个方法效果和用法和reduce()相同,不过是从数组最后一个元素计算到第一个元素
第二种是会产生新数组的方法
1.map()
map方法和forEach()类似,参数为一个方法,对数组中的元素使用这个方法。区别在于,map()会返回一个>数组,该数组元素就是对原有元素应用参数方法的返回值
function fun(item) {
return item += 3;
}
var list = [1,2,3,4,5]
var newList = list.map(fun);
// 这里newList 就是: [4,5,6,7,8]
2.filter()
filter()和every()类似。参数为一个返回值是布尔类型的方法。顾名思义,filter()是过滤掉一些元素的方法。
当遍历的数组元素中返回值是true时会将此元素添加到新数组中