js原生知识:数组API
1、 判断数组中所有元素是否符合要求:
arr.every(、、、):判断arr中所有元素是否都符合要求。
arr.some(、、、):判断arr中是否包含符合要求的元素。
如何使用:
var bool=arr.every(function(val,idx,arr){
return判断条件
}
);
some:判断是否*包含*满足要求的元素
arr.some(function(val,idx,arr){
...
})
every会用function去arr中每个元素执行检查。只有每个元素的执行结果都为true时,才返回true。只要任意一个不返回true,则every立刻返回false。
说明:
val:自动获得当前正在检查的元素值
idx:自动获得当前正在检查的元素位置
arr:自动获得当前正在检查的数组对象
2、遍历: 对数组中的每个元素执行相同个操作
arr.forEach(、、、):对原数组arr中每个元素执行相同的操作,再保存回原数组。直接修改原数组
arr.forEach(function(val,idx,arr){
...对arr[idx]的值做修改
})
var arr1=[1,2,3,4,5];
arr1.forEach(function(val,idx,arr){
arr[idx]*=2;
});
console.log(String(arr1));
arr.map(、、、):基于原数组arr,将每个元素加工后,生成新数组。不直接修改原数组,返回新数组
varnewArr=arr.map(function(val,idx,arr){
//根据val,修改后,返回给新数组
return新值;
})
例如:
vararr2=[10,8,6,4,2];
varends=arr2.map(function(val,idx,arr){
returnval*=2;
});
console.log(String(arr2));
console.log(String(ends));
3、过滤和汇总:
filter:复制出原数组中符合要求的元素,组成新数组。
var sub=arr.filter(function(val,idx,arr){
return条件
})
不修改原数组。
//过滤
var arr=[1,2,3,4,5];
var evens=arr.filter(function(val){
return val%2==0;//过滤出数组中的偶数
});
varodds=arr.filter(function(val){
return val%2==1;//过滤出数组中的奇数
})
console.log(String(evens));
console.log(String(odds));
console.log(String(arr));
reduce:将数组中每个元素的值汇总出一个结果。
var r=arr.reduce(
function(prev,val,idx,arr){
//prev: 获得目前截止的汇总值
return prev和val的汇总值
},base)
依次将arr中每个值,汇总到prev中。
说明:prev获得的是截止idx位置之前的所有元素值的临时汇总
base,用来设置起始的汇总值。
//汇总
vararr=[1,2,3,4,5];
varr=arr.reduce(function(prev,val){
return prev+val;
});
console.log(r);
var arr2=[6,7,8,9,10];
r=arr2.reduce(function(prev,val){
return prev+val;
},r);
console.log(r);