zoukankan      html  css  js  c++  java
  • ES6 —— 数组总结

    1. map:映射   一个对一个

    arr.map(function(item) { ... })    可以配合箭头函数:arr.map(item => ... ) 

            let arr1 = [1,2,3]
            let result1 = arr1.map(item=>item*2)
            console.log(result1)    // [2,4,6]
            let score = [56,88,90];
            let grade = score.map(item=>item>=60?'及格':'不及格');
            console.log(score);  // [56, 88, 90]
            console.log(grade);  // ["不及格", "及格", "及格"] 

    可以看到一一对应的关系

    2. reduce:汇总 一堆对一个

    语法:arr.reduce(function(tmp, item, index [,arr]){ ... }[, initialValue])

    tmp:初始值,或是上一次的叠加结果值,不指定initialValue时默认为arr[0]的值为起始值

    item:当前值

    index:当前值在数组中的index值

    arr:当前数组,可不写

    initialValue:指定初始执行的值

    下面给几个例子用于熟悉这几个参数的含义

            let arr2 = [12,69,180,8763]
            arr2.reduce((tmp,item,index)=>{
                console.log(tmp,item,index)
            })
            // 12,69,1
         // undefined,180,2
         // undefined,8763,3
            arr2.reduce((tmp,item,index)=>{
                console.log(tmp,item,index)
            },[])
            // [] 12 0
         // undefined,69,1
         // undefined,180,2
         // undefined,8763,3
         arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) },0)      // 0 12 0      // undefined,69,1      // undefined,180,2      // undefined,8763,3

     tmp是初始值或是上一次的叠加结果值,所以第一个我们可以看到tmp是有值的:

    当有initialValue时显示为initialValue值,如果initialValue缺省则显示arr[0]的值,即12

    后面剩下的循环这里undefined是因为reduce里面没有写两者相加这个语句,所以tmp这个值是没有的

     

    在function里添加tmp+item,看下面这两个例子:

            arr2.reduce((tmp,item,index)=>{
                console.log(tmp,item,index)
                return tmp+item
            },[])
            // [] 12 0
         // 12,69,1
         // 1269,180,2
         // 1269180,8763,3

      // 这里明显是字符串的拼接了,因为初始值是[],所以tmp+item是按照字符串拼接的方式相加的
    let result2 = arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) return tmp+item }, 0) // 0 12 0      // 12,69,1      // 81,180,2      // 261,8763,3 console.log(result2) // 9024 result2最后是最终求和的结果

     如果想求平均值呢?逻辑是:前面循环求和,最后一次求和后除以数组个数,即:

            let result3 = arr2.reduce((tmp,item,index)=>{
                if(index!=arr2.length-1){  // 不是最后一个
                    return tmp+item
                }else {                    // 是最后一个
                    return (tmp+item)/arr2.length
                }
            })
            console.log(result3)  // 2256 求平均值

    3. filter 过滤  返回值是符合过滤条件的元素

    arr.filter(function(){ ... })

            let arr3 = [22,5,63,34,12,7,69]
            let result4 = arr3.filter(item=>item%3==0)
    
            console.log(result4)   // [63, 12, 69]

    filter在循环的过程中有一个判断过程,是true则返回,false则去掉

    4. forEach  循环迭代

    arr.forEach(function(item, index){ ... })

  • 相关阅读:
    linux 安装 tomcat
    IE条件注释
    了解常见的开源协议(BSD, GPL, LGPL,MIT)
    Ueditor 1.4.3 单独调用上传图片,或文件功能
    javascript代码规范 [转]
    html5 拖曳功能的实现[转]
    几种常用的正则表达式[转]
    MYSQL基础03(日期函数)
    MYSQL基础02(查询)
    OpenCV(7)-图像直方图
  • 原文地址:https://www.cnblogs.com/ningyn0712/p/9483352.html
Copyright © 2011-2022 走看看