js中map()、some()、every()、filter()的使用简介,以及注意点。

js的Array对象有map、some、every、filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别,很多工作三四年的前端,对这些函数使用并不是很了解,这里我简单写写这些方法的用法。

map:

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]

js中map()、some()、every()、filter()的使用简介,以及注意点。_第1张图片


some:用于检测数组中的元素是否满足指定条件(函数提供)

注意:函数提供指的是 自己写一个条件函数供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

 

js中map()、some()、every()、filter()的使用简介,以及注意点。_第2张图片


every:用于检测数组所有元素是否都符合指定条件(通过函数提供)

注意:every和some正好相反:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
  • 如果所有元素都满足条件,则返回 true。
  • function形参同上    

    

var age=[12,18,20,30]

function checkAdult(age) {
    return age >= 18;
 }

console.log(age.every(checkAdult));        //输出false

filter:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素

注意:filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回

var ages = [32, 33, 16, 40];

 function checkAdult(age) {
    return age >= 18;
}

 console.log(ages.filter(checkAdult));  //32,33,40

js中map()、some()、every()、filter()的使用简介,以及注意点。_第3张图片

你可能感兴趣的:(前端js,日常总结,javascript)