zoukankan      html  css  js  c++  java
  • Array.from()

    es6 Array.from() 方法将两类对象转为真正的数组
    用法:用于将两类对象转为真正的数组:类似数组的对象和可遍历(iterable)的对象(包含ES6新增的数据结构Set和Map);
    说明:1)只要是部署了Iterator接口的数据结构,Array.from都能将其转化为数组
      2)如果参数是一个真正的数组,Array.from会返回一个一模一样的新数组。
      3)扩展运算符背后调用的是遍历器接口(Symbol.iterator),如果一个对象没有部署这个接口,就无法转换。Array.from方法还支持类似数组的对象。所谓类似数组的对象,本质特征只有一点,即必须有length属性。因此,任何有length属性的对象,都可以通过  Array.from方法转为数组,而此时扩展运算符就无法转换。
    注意:对于还没有部署该方法的浏览器,可以用Array.prototype.slice方法替代
      const toArray = (() => {
        Array.from ? Array.from : obj => [].slice.call(obj);
      })

    例:
      let arrayLike = {
        '0': 'a',
        '1': 'b',
        '2':'c',
        length: 3
      };
      //es5的写法
      var arr1 = [].slice.call(arrayLike);
      //es6写法
      var arr2 = Array.from(arrayLike);

    例2:dom返回的NodeList集合和函数内部的arguments对象
      //NodeList对象
      let ps = document.querySelectorAll('p');
      Array.from(ps).filter(p => {
        return p.textContent.length > 100;
      })
      //arguments对象
      function foo() {
        var args = Array.from(arguments);
      }
    例3:
      Array.from({ length: 3 });
      // [ undefined, undefined, undefined ]


    Array.from可以接受第二个参数 作用类似数组的map方法

    例3:
      Array.from(arrayLike, x => x * x);
      Array.from(arrayLike).map(x => x * x);
      Array.from([1, 2, 3], (x) => x * x);

  • 相关阅读:
    关联A850刷机包 高级电源 时间中心 优化 ROOT 动力 美化 简化
    CodeForces 425E Sereja and Sets
    int有符号和无符号类型内存 -- C
    软件体系结构————防御性编程
    Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下
    椭圆识别
    UVa 10223
    照片详细解释YUV420数据格式
    LeetCode:Reverse Integer
    看了此文你还不懂傅里叶变换,那就来掐我吧
  • 原文地址:https://www.cnblogs.com/insignificant-malt/p/8528882.html
Copyright © 2011-2022 走看看