• es6 的数组的方法


      es6 数组的拓展

      数组的类 Array 

      数组的定义:

        1. var arr=[];

        2. var arr=new Array(3)  // 3 代表有三个元素

          arr[0]=12;

          arr[1]=24;

          arr[2]=36;

        3. var arr=new Array("zhang","lisi","wang");

      [] 代表空数组  [empty] 代表一个空元素

        var arr=new Array("4");

        代表有一个元素 为 4 

      var arr=new Array(3) 与 var arr=new Array("3") 的区别?

      第一个的 3 代表,这个数组中有 3 个元素, 第二个的 3 代表,这个数组中有一个元素,为3

      数组的方法:

      1. of()   他是 Array 类上的方法

        var arr=Array.of(4);

        console.log(arr) // [4] 返回一个数组,里面有一个元素为 4 

      2. forEach()  他是原型的方法,用于对数组的遍历,返回值 undefined

        案例:

        var arr=[12,23,56,96,105];

        var as = arr.forEach((item,index)=>{

           // item  代表元素  index 代表索引

           console.log(item) 

          console.log(index)

        })

        console.log(as) // undefined 

      3. map 原型上的方法,用于数组遍历加工,  返回值:仍然是个新数组,  参数:回调函数  

        var arr=[12,36,85,96,102];

        var as = arr.map((item,index)=>{

          return item+3;  // 此方法一定要 return             

        })

      4. filter 过滤  从数组中找出所有的指定条件的元素,并返回成一个新的数组,不改变原有数组   return 返回值是 true 就保留,返回值是 false 就不保留

        var arr=[

          {name:"zhang",age:20},

          {name:"lisi",age:10}

        ];

        var as=arr.filter((item,index)=>{

          // item 元素  index 索引

          return item.age>15;    // 条件语句的返回值 true 和 false

        })

        console.log(as)  // 返回满足条件的 {name:"zhang",age:20};

      5. find:查找,查找第一个满足条件的元素  参数:回调函数  返回值:第一个满足条件的元素

        var arr=[

          {name:"zhang",age:20},

          {name:"lisi",age:30},

          {name:"wang",age:15}

        ]

        var as=arr.find((item,index)=>{

          // item 元素  index 索引

          return item.age>18;  

        })

        console.log(as)  // 他的返回结果就只有一个,(对数组中逐个查找,当返回值为 true,说明找到,直接将结果返回,不在继续查找)

      6. every:看数组中的每个是元素是否都满足条件  参数:回调函数  返回值:布尔

        var arr=[

          {name:"zhang",age:20},

          {name:"lisi",age:10}

        ]

        var as=arr.every((item,index)=>{

          // item 元素  index 索引

          return item.age>5;

        })

        console.log(as)  // true   这种结果返回的 true,因为它的所有元素都满足这个条件,但是只要有一个不满足,返回值为 false 

      7. some: 看数组中的元素是否都满足条件,只要有一个满足,返回值是 true ,全部都不满足这个条件,返回值为false   参数:回调函数

        var arr=[

          {name:"zhang",age:20},

          {name:"lisi",age:10}

        ]

        var as=arr.some((item,index)=>{

          // item 元素  index 索引

          return item.age>30;

        })

        console.log(as)  // false   所有的元素都不满足他的条件,返回 false,但只要有一个满足,返回 true

      8. reduce:迭代,在原有的基础上继续 

        var arr=[1,2,3,4,5,6,7,8,9,10];

        var as=arr.requce((prev,item,index)=>{

          //  prev  代表上一个的返回值(return 的返回值,就好比 item = 3 的时候,prev 代表上次返回的结果,return 1+2) 

            //  item 数组的元素,如果遍历的话,默认从第二个元素开始, index 数组的索引 

          return prev+item  // return 的结果

        },0)  // 这个0 代表第一个返回的结果,最终目的是让 item 从第一个元素开始

        上面的代码翻译为 var as=1+2+3+4+5+6+7+8+9+10

        console.log(as)  // 55   

       注意:

        1. 默认从第二个元素开始执行,第一个元素没有上一个

        2. 第一次执行返回的是第一个元素,reduce 的参数 是一个回调函数,回调函数中有三个参数,第一个叫 prev 代表上一次 reduce 执行的返回值就,第二个叫 item 代表返回的元素

         第三个叫 index 返回的是当前的索引

        3. 如果想让 reduce 从第一个元素开始执行,(默认从第二个),回调函数后面的参数,就是第一次执行的 prev

      1. 面试题

        将一个数组转换成对象,属性是数组的元素,属性值是元素的个数

        解答;

          var arr=["item","tom",,"jack","item","jack"];
          var as=arr.reduce((prev,item)=>{
            if(item in prev){
              prev[item]++
            }
            else{
              prev[item]=1;
            }
            return prev
          },{})
          console.log(as);  // {tom:2,item:1,jack:2}
  • 相关阅读:
    AC自动机
    【洛谷P1972】HH的项链
    【洛谷P4341】外星联络
    【洛谷P4576】棋盘游戏
    【JZOJ3800】败屩妖
    【JZOJ3798】临洮巨人
    【洛谷P3830】随机树
    【JZOJ3799】青蛙神
    牛客练习赛56 题解
    【洛谷P5300】与或和
  • 原文地址:https://www.cnblogs.com/shangjun6/p/11162863.html
Copyright © 2020-2023  润新知