JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()

这篇具有很好参考价值的文章主要介绍了JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. for、forEach

1.1 for 遍历的3种写法

  • 代码如下:
    var array = [66,77,88];
    
    for(var i =0;i<array.length;i++){
    	console.log(array[i]);
    }
    
    console.log("\n============")
    
    for(var i in array){
    	console.log(array[i]);
    }
    
    console.log("\n============")
    
    for(var item of array){
    	console.log(item);
    }
    
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

1.2 forEach + 回调函数 遍历

  • 如下:

    	  var array = [66,77,88];
    
          console.log("\n=====1.1=======\n\n")
    
          array.forEach(function(value){
              console.log(value);
          });
    
          console.log("\n====1.2========\n\n")
    
          array.forEach(function(value,index){
              console.log(`${index}--->${value}`);
          });
    
    
    	  function Dog(name,age){
    		  this.name = name;
    	  	  this.age = age;
    	  }
    	  var d1 = new Dog("麦兜",3);
    	  var d2 = new Dog("贝塔",2);
    	
    	  var dogArray = [d1,d2];
    
          console.log("\n\n\n=====2.1=======\n\n\n")
    
          dogArray.forEach(function(dog){
              console.log(dog);
          })
    
          console.log("\n=====2.2=======\n\n")
    
          dogArray.forEach(function(dog,index){
              console.log(index + '---->' + JSON.stringify(dog));
          })
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

1.3 forEach + 箭头函数 遍历

  • 代码简洁很多,如下:

    var array = [66,77,88];
    
    console.log("\n=====1.1=======\n\n")
    
    array.forEach(value=>console.log(value));
    
    console.log("\n====1.2========\n\n")
    
    array.forEach((value,index)=>{
        console.log(`${index}------${value}`);
    })
    
    
    function Dog(name,age){
    	this.name = name;
    	this.age = age;
    }
    var d1 = new Dog("麦兜",3);
    var d2 = new Dog("贝塔",2);
    
    var dogArray = [d1,d2];
    
     console.log("\n\n\n=====2.1=======\n\n\n")
    
     dogArray.forEach(dog=>console.log(dog))
    
     console.log("\n=====2.2=======\n\n")
    
     dogArray.forEach((dog,index)=>console.log(index + '---' + JSON.stringify(dog)))
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

2. filter()

2.1 介绍

  • 简介
    filter() 方法创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。
  • 语法
    filter(callbackFn)
    filter(callbackFn, thisArg)
    
  • 参数、返回值
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
  • 描述
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
  • 参考官网:
    官网——Array.prototype.filter().

2.2 例子1——简单过滤

  • 代码如下:
    const array = [66,77,88];
    
    //1. 箭头函数回调
    const newArray_1 = array.filter(arr => arr > 70);
    
    //2. 匿名函数回调
    const newArray_2 = array.filter(function(arr){
        return arr > 70;
    });
    
    //3. 普通函数回调
    function myFilter(val){
        if(val > 70){
            return true;
        }else{
            return false;
        }
    }
    const newArray_3 = array.filter(myFilter);
    
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

2.3 例子2——在修改数组时 filter() 方法的行为

  • 代码如下:

    console.log("\n\n====1. 排除第一个元素=====\n\n");
    
     const numArray_1 = [6,7,8];
    
     const new_numArray_1 = numArray_1.filter((item,index,array)=>{
         array[index+1] += 10; //修改的是下一个元素,影响了初始数组,但是数组中第一个数据不动,其余+10
         return item > 10; //除了第一个元素,其余判断时都已经 +10 了
     });
     console.log(numArray_1);//[6, 17, 18, NaN]
     console.log(new_numArray_1);// [17, 18]
    
     console.log("\n\n====2. 所有元素+10 后都判断=====\n\n");
    
     const numArray_2 = [6,7,8];
    
     const new_numArray_2 = numArray_2.filter((item,index,array)=>{
         array[index] += 10;  //从当前元素就改变,即:该变了数组中所有元素
         return array[index] > 10; 
         /**需要注意的是:
          * 这个只是过滤条件,装入新数组的是item,
          * 当前循环时item的值并没有改变(当前下标在数组中的元素值没有改变),
          * 所以装入新数组的是老数据
          */
     });
     console.log(numArray_2);//[16, 17, 18]
     console.log(new_numArray_2);//[6, 7, 8]
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

2.4 例子3——在数组中搜索

  • 下例使用 filter() 根据搜索条件来过滤数组内容。
  • 代码如下:
     <script>
         const pets = ['dog-麦兜','dog-泡泡','cat-阿苔','dog-lucky','cat-点点'];
    
         const strs = ['I love you','love?','no','he is hate','love me?'];
    
         function filterIterms(array,query){
             return array.filter(arr => arr.includes(query.toLowerCase()));
         }
    
         let dogs = filterIterms(pets,'dog');
         let cats = filterIterms(pets,'cat');
         let loveStr = filterIterms(strs,'LOve');
    
         console.log(dogs);
         console.log(cats);
         console.log(loveStr);
     </script>
    
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

3. map()

3.1 介绍

  • 简介:
    map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
  • 语法
    map(callbackFn)
    map(callbackFn, thisArg)
    
  • 参数、返回值
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
  • 描述
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

3.2 例子1——求数组中每个元素的2倍

  • 代码如下:

     const numArray = [1,3,5,7];
    
     const new_numArray = numArray.map(num => num*2 );
    
     console.log(numArray);
     console.log(new_numArray);
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

3.3 例子2——使用 map 重新格式化数组中的对象

  • 代码如下:

     const kvArray = [
         { key: 1, value: 10 },
         { key: 2, value: 20 },
         { key: 3, value: 30 },
     ];
    
     const reformattedArray = kvArray.map(( {key, value} )=>{
         return ({[key]: value});
     });
    
     console.log(kvArray);
    
     console.log("\n\n======重新格式化数据之后=====\n\n");
     console.log(reformattedArray); // [{ 1: 10 }, { 2: 20 }, { 3: 30 }]
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

  • 更多使用请参考官网:
    官网——Array.prototype.map().

4. reduce()

4.1 介绍

  • 使用说明
    • reduce() 方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
    • 第一次执行回调函数时,不存在“上一次的计算结果”。
    • 从第一个元素开始循环还是第二个元素开始循环,取决于有没有传初试值:
      • 如果传初试值:
        回调函数从数组索引为 0 的元素开始执行,汇总结果是:初试值 + 数组中的每个元素
      • 如果没有传初试值:
        数组索引为 0 的元素将被用作初始值,迭代器将从第二个元素开始执行。
  • 语法
    reduce(callbackFn)
    reduce(callbackFn, initialValue)
    
  • 参数 + 返回值
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
  • 描述
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

4.2 例子1——数组元素求和

  • 代码如下:

    <script>
        
        const numArray = [1,2,3,4];
    
        /**
         * 没有初试值时:
         * 1. accumulator的值:在第一次调用时,如果没有指定 初始值 则为 数组中的第一个值;
         * 2. 并且 callbackFn 从数组中的第二个值作为 currentValue 开始执行。
         */
        const result_1 = numArray.reduce((accumulator, currentValue)=>{
            console.log(currentValue);
            return accumulator + currentValue;
        });
    
        console.log("结果:" + result_1);//没有初试值:1+2+3+4 = 10
    
    
        console.log("\n\n\n========给初试值的情况======\n\n\n");
    
        /**
         * 有初试值:
         * 1. accumulator的值:在第一次调用时,如果指定了 初始值 则为指定的初始值
         * 2. callbackFn 从数组中的第一个值作为 currentValue 开始执行
         */
        const result_2 = numArray.reduce((accumulator, currentValue)=>{
            console.log(currentValue);
            return accumulator + currentValue;
        },200); //指定初试值:200
    
        console.log("结果:" + result_2);//有初试值:200+1+2+3+4 = 210
    
    </script>
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

4.3 例子2——求对象数组中某属性值的总和

  • 代码如下:
        <script>
    
            function Dog(dogName,dogAge){
                this.dogName = dogName,
                this.dogAge = dogAge
            }
    
            let dog_1 = new Dog('麦兜',3);
            let dog_2 = new Dog('泡泡',5);
            let dog_3 = new Dog('大牙',2);
    
            const dogs = [dog_1,dog_2,dog_3];
    
            // console.log(dogs);
            
            const sumAge = dogs.reduce((pre,cur)=>{
                return pre + cur.dogAge;
            },0);
    
            console.log(sumAge);
            
        </script>
    
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

4.4 例子3——展平嵌套数组

  • 如下:

      //展平嵌套数组
      const array = [[1,2],[3,4],[5,6]];
    
      const new_array = array.reduce((accumulator, currentValue)=>{
          return [...accumulator,...currentValue];
      });
    
      console.log(new_array);
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript

4.5 例子4——统计对象中值的出现次数

  • 如下:

      //统计对象中值的出现次数
    
      const strs = ['you','love','I','love','beautiful','go'];
    
      const count_result = strs.reduce((countSum,currentStr)=>{
          if(currentStr === 'love'){
              return countSum + 1;
          }
          return countSum;
      },0);
    
      console.log("love 单词出现的次数:" + count_result);
    

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript文章来源地址https://www.toymoban.com/news/detail-702219.html

4.6 例子5——数组去重

  • 如下:
     //去重
     const strs = ['you','love','go','love','beautiful','go'];
    
     let result = strs.reduce((countSum,currentStr)=>{
         if(countSum.includes(currentStr)){
             return countSum;
         }else{
             return [...countSum,currentStr];
         }
     },[]);
    
     console.log(strs);
     console.log(result);
    
    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce(),VUE + JS、NodeJs,javascript,开发语言,ecmascript
    更多用法,请参考官网:
    官网——Array.prototype.reduce().

到了这里,关于JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript中的map()和forEach()方法有什么区别?

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月06日
    浏览(48)
  • filter、map、reduce 一次性说清楚

    filter() 方法是 JavaScript 中数组的一个方法,用于筛选数组中符合指定条件的元素,并返回一个新的数组,新数组中包含筛选出的元素。 filter() 方法语法如下: 其中,参数 callback 是一个回调函数,用于定义筛选规则,该函数接收三个参数 element、index、array,分别代表当前正在

    2024年02月06日
    浏览(44)
  • python之lambda-filter-map-reduce作用

    lambda : 匿名函数 ,让函数更简洁,有时候妙用无穷; 使用方法:lambda 后面直接跟变量,变脸后面是冒号,冒号后面是表达式,表达式的计算结果就是本函数的返回值 注意:虽然 lambda 函数可以接收任意多的参数并且返回单个表达式的值,但是 lambda 函数不能包含命令且包含

    2023年04月15日
    浏览(34)
  • Vue的map()方法和filter()方法的使用

    map():方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值 案例: filter():方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素 注: foreach遍历数组,不会有返回值 map遍历数组,返回处理后的新数组 every判断数组中每一个元

    2024年02月10日
    浏览(40)
  • 【深入探讨】JavaScript 中的 forEach 和 map 区别

    🐱 个人主页: 不叫猫先生 ,公众号: 前端Clodplay 🙋‍♂️ 作者简介:前端领域优质作者、阿里云专家博主,共同学习共同进步,一起加油呀! ✨优质专栏:VS Code插件开发极速入门 📢 资料领取:前端进阶资料可以找我免费领取 map会返回一个新的数组,而forEach不会 。

    2024年04月28日
    浏览(37)
  • JavaScript -- Map对象及常用方法介绍

    Map用来存储键值对结构的数据**(key-value)** Object中存储的数据就可以认为是一种 键值对结构 Map和Object的主要区别: Object中的属性名只能是 字符串或符号 ,如果传递了一个其他类型的属性名,JS解释器会自动将其 转换为字符串 Map中任何类型的值都可以成为数据的key map.si

    2024年02月10日
    浏览(52)
  • Rust中的迭代器的使用:map转换、filter过滤、fold聚合、chain链接

    Rust中的迭代器是一种强大的工具,它提供了一种灵活、通用的方法来遍历序列。迭代器是实现了Iterator trait的类型,并需要至少实现一个next函数,用于让迭代器指向下一个迭代对象,并返回一个Option用于指示对象是否存在。 迭代器相比于for循环有一些优势。首先,迭代器提

    2023年04月12日
    浏览(38)
  • Mongodb 多文档聚合操作处理方法二(Map-reduce 函数)

    聚合操作处理多个文档并返回计算结果。您可以使用聚合操作来: 将多个文档中的值分组在一起。 对分组数据执行操作以返回单个结果。 分析数据随时间的变化。 要执行聚合操作,您可以使用: 聚合管道 单一目的聚合方法 Map-reduce 函数 在mongoshell 中,该db.collection.mapRedu

    2024年02月15日
    浏览(49)
  • JavaScript——forEach()方法

      举例说明: !注意:只遍历有值的元素

    2024年02月19日
    浏览(42)
  • JavaScript forEach 方法跳出循环

    这个问题平时工作中基本不会遇到,通常是面试时,有的面试官喜欢问这个,所以有了探讨的意义。 首先我们来看看 for 循环是怎么处理跳出的。 JavaScript中,for循环可以使用 break 和 continue 来跳出: continue:跳出本次循环 break:结束循环 了解了 for 循环跳出之后,forEach 如何

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包