JavaScript基础 - 24 (数组方法:every、some、forEach、map、filter、reduce)

1、参数为回调函数,function(数组中的项目,序号,数组本身){ },至少接收一个项目(item、value)参数

① every

         数组中所有内容都满足回调函数的测试,返回值才为true,否则false,遇假停止,返回false

    //value是数组中的每个元素的值,这个匿名函数会被数组循环调用
    var res = nums.every(function(value){
      //其中内容就是对值的判断条件,例如验证<50
      console.log(`当前判断的值是:${value}`);
      return value<50;
    });
    //如果匿名函数中的判断,都是真的,则最终的every的返回值就是真
    //有任何假的,则返回值就是假
    console.log(res);

    //判断都是偶数
    var res1 = nums.every(function(value,index,array){
      //匿名函数共有3个参数:值 值的索引 当前数组。后两个参数使用太少了
      console.log(`${value},${index},[${array}]`);
      return value%2 == 0;
    })

②some

        数组中内容存在任意一个满足回调函数的测试的,返回值为true, 否则false,遇真停止,返回

   var teachers = [
      {name:"lily",age:39,married:true},
      {name:"tom",age:27,married:false},
      {name:"jack",age:22,married:true},
      {name:"lucy",age:36,married:false},
    ];

    //判断数组中,是否存在年龄>35的人
    var result = teachers.some(function(item,index,arr){
      return item.age>35
    });
    console.log(result?"有人年龄>35":"没有年龄>35的");

    //判断是否有已婚的
    var result = teachers.some(function(item){
      return item.married
    })
    console.log(result?"有已婚":"没已婚");

③forEach

        遍历数组, 每个数组元素都被 回调函数处理

   //数组的forEach方法:快速遍历数组
    var emps = [
      {name:"丫丫",age:36},
      {name:"久久",age:19},
      {name:"明明",age:23},
    ]   

    //为每个年龄+1
    emps.forEach(function(item){
      item.age++;
    })

    //年龄翻一倍
    emps.forEach(function(item){
      item.age*=2
    })

④map

        创建新数组,新数组由回调函数的返回值组成

   //map:创建一个新的数组,数组的值都是回调函数的返回值组成的
    var names = ["lily", "lucy", "john", "tom"];
    //回调函数:依然具备三个参数,都是可选的
    var new_names = names.map(function(item,index,arr){
      return index + item.toUpperCase()
    });

⑤filter

        创建新数组,满足回调函数中的条件的元素, 会加入到新数组

    var emps = [
      {name:"牛牛",gender:"男",age:20},
      {name:"丫丫",gender:"女",age:25},
      {name:"毛毛",gender:"女",age:29},
      {name:"婷婷",gender:"男",age:32}
    ];

    //找出所有女性,放在新数组中
    var girls = emps.filter(function(item){
      return item.gender == "女"
    });

    //找出年龄<30的
    var young = emps.filter(function(item){
      return item.age<30
    });

2、reduce: 合并数组中的元素的内容,形成最终的结果

        参数1:回调函数:function (合并后的结果,item,index,arr){ }

       参数2:合并结果的初始值

        emps.reduce( function(sum,item){return sum + item.salary},0 );

   var emps = [
      {name:"lucy",salary:8000},
      {name:"mike",salary:5500},
      {name:"tom",salary:11000},
      {name:"jerry",salary:7900},
    ];

    //计算所有工资的总和
    //forEach写法:
    var sum = 0;
    emps.forEach(function(item){
      sum += item.salary
    })
    
    //reduce 写法:
    //参数1:回调函数:function (合并后的结果,item,index,arr){}
    //参数2:合并结果的初始值
    let result = emps.reduce(function(sum,item){
      return sum + item.salary
    },0);

上一篇:[python]爬虫学习(一)


下一篇:适用于单片机的数据加密算法:xxtea