ES6 - 数组

215 阅读1分钟

回顾ES5的数组循环方法

  1. arr.forEach((val,index,arr)=>{}); 不可以return 值出来;
  2. arr.map((val,index,arr)=>{});常和return一起用,返回新数组,如果没有return,作用等同于forEach();
  3. arr.filter((val,index,arr)=>{});过滤掉返回值为false的元素,返回新数组;
  4. arr.some((val,index,arr)=>{}); 只要有一个元素符合条件(返回true),就返回true;
  5. arr.every((val,index,arr)=>{});所有元素符合条件(都返回true),才会返回true;
  6. arr.reduce((pre,cur,index,arr)=>{return pre**cur}); 数组连加连乘之类的操作(递归);
  7. arr.reduceRight((pre,cur,index,arr)=>{}); 从后往前操作;

ES6新加的求幂操作符** 等价于之前的Math.pow()

ES6 新加的数组循环方法 for...of

  1. for(let val of arr){}; 对数组值进行循环;
  2. for(let index of arr.keys()){}; 对数组索引循环
  3. for(let item of arr.entries()){}; 对数组项循环
  4. for(let [key,val] of arr.entries()){};对键值循环

注意ES6中array的新方法
arr.keys()数组下标
arr.entries()数组项

数组新特性

  1. Array.from():
    • 复制数组:let arr2 = Array.from(arr);
    • 把类数组转换为数组:基本上有 length属性的都可以转为数组:
      1. js 选择的DOM节点,nodeList--类数组;
      2. function自带的arguments--类数组
      3. 字符串,有length属性
      4. json对象,如果添加length属性后,也可以转为数组;
  2. Array.of(): 基本上与...运算符差不多,可以将几个字符串转为数组;
  3. Array.find((val,index,arr)=>{})找到就返回第一个符合条件的item,没找到返回undefined;
  4. Array.findIndex((val,index,arr)=>{})返回第一个符合条件的索引,没找到就返回-1;
  5. arr.fill('默认值',1,3)用默认值填充第一第二个元素;
  6. arr.includes();str.includes()基本一致,也可以用arr.indexOf()判断是否包含某元素;