js的Array对象有map、some、every、filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别,很多工作三四年的前端,对这些函数使用并不是很了解,这里我简单写写这些方法的用法。
map():通过指定函数处理数组的每个元素,并返回处理后的数组。(注意这里返回的是一个新数组,原来数组内存地址不改变,map不会改变原数组,map不会检查空数组)
var a=[1,2,3,4];
a.map(item=>{return item*2}) //[2, 4, 6, 8]
a=a.map(item=>{return item*2}) //赋值过后a数组发生改变 输出[2, 4, 6, 8]
console.log(a); //[2, 4, 6, 8]
var b=[1,2,3,4];
var c=b.map(item=>{return item*2});
console.log(b); //[1,2,3,4]
console.log(c); //[2, 4, 6, 8]
注意:函数提供指的是 自己写一个条件函数供some使用,some不会改变原数组,some不会检查空数组,而且some函数返回的是布尔类型的数据,
some方法会依次执行数组的每个元素,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
如果没有满足条件的元素,则返回false;
这里简单写一个利用some函数去校验是某个人名否存在数组里
function checkName(val) { //条件函数
return cname == val
}
var nameList=['张三','李四','王二'];
var cname='王二';
var isname=nameList.some(checkName);
console.log(isname); //输出 true
注意:every和some正好相反:
var age=[12,18,20,30]
function checkAdult(age) {
return age >= 18;
}
console.log(age.every(checkAdult)); //输出false
注意:filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
console.log(ages.filter(checkAdult)); //32,33,40