zoukankan      html  css  js  c++  java
  • 整理

    ES6 数组 map, reduce,filter, forEach, some, every

    1. map(映射)

    返回一个新数组,不会改变原数组。

    对应参数:item 每次的值, 当前索引,原来数组arr

    eg.

    
    let arr = [22, 55, 67, 33, 99, 70];
    let result = arr.map((item, index, arr) => {
      return item > 60 ? "及格" : "不及格";
    });
    console.log(result);
    console.log(arr);
    
    

    [ '不及格', '不及格', '及格', '不及格', '及格', '及格' ]
    [ 22, 55, 67, 33, 99, 70 ]

    2. reduce 缩小

    一堆对一个,求和或者平均数,累加器。不改变原数组。
    temp是每次的临时变量是第n次和第n+1次的临时和,item是每次要往上加的值,index是每次循环的index,index从0开始。

    
    let arr2 = [22, 55, 67, 33, 99, 70];
    let result2 = arr2.reduce((temp, item, index) => {
      console.log(temp, item, index);
      return temp + item;
    });
    console.log(result2);
    console.log(arr2)
    

    22 55 1
    77 67 2
    144 33 3
    177 99 4
    276 70 5
    346
    [ 22, 55, 67, 33, 99, 70 ]

    3. filter 过滤器

    返回符合回调函数中指定条件的数组元素,true保留,false过滤。
    不改变原数组大小。

    
    let arr3 = [2, 4, 76, 87, 35, 66];
    let result3 = arr3.filter((item) => item % 3 === 0);
    console.log(result3);
    console.log(arr3);
    
    

    [ 87, 66 ]
    [ 2, 4, 76, 87, 35, 66 ]

    4. forEach 迭代

    forEach遍历数组,无返回值,不改变原数组,仅仅只是遍历。

    
    let arr4 = [2, 3, 4, 5];
    arr4.forEach((item) => console.log(item));
    
    

    2
    3
    4
    5

    5. every

    遍历数组每一项,每一项返回 true,则最终结果为 true。当任何一项返回false时,停止遍历返回false。不改变原数组。

    
    let arr5 = [1, 2, 5, 4, 5, 6, 7, 8];
    let flag = arr5.every((item, index, arr) => {
      console.log(item);
      return index === 0 ? true : item > arr[index - 1];
    });
    console.log(flag);
    console.log(arr5);
    
    

    1
    2
    5
    4
    false
    [ 1, 2, 5, 4, 5, 6, 7, 8 ]

    6. some

    遍历数组每一项,有一项返回true,就返回true,当任何一项返回true时,则停止遍历,返回true。

    
    let arr6 = [1, 2, 3, 5, 6, 5, 6, 7, 8, 9];
    let flag6 = arr6.some((item, index, arr) => {
      console.log(item);
      return index == 0 ? false : item < arr[index - 1];
    });
    console.log(flag6);
    console.log(arr6);
    
    

    1
    2
    3
    5
    6
    5
    true
    [ 1, 2, 3, 5, 6, 5, 6, 7, 8, 9 ]

    以上6个方法均为ES6语法,IE9以及上才支持。不过可以通过babel转译支持IE低版本。
    以上均不改变原数组。

    some、every 返回 true、false。
    map、filter 返回一个新数组。
    reduce 让数组的前后两项进行某种计算,返回最终操作的结果。
    forEach 无返回值。

  • 相关阅读:
    java几种数据的默认扩容机制
    web.xml配置详解
    Bootstrap文件上传组件
    JAVA四则运算算法
    Oracle 和 mysql 的批量操作Sql语句 的区别
    JAVA使用ItextPDF
    c# 状态机实现
    c++11模拟boost元占位符placeholder
    vs2012 函数参数内存对齐引发编译错误
    windows下matplotlib编译安装备忘
  • 原文地址:https://www.cnblogs.com/xiaoxu-xmy/p/13831878.html
Copyright © 2011-2022 走看看