博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Array.from()
阅读量:5278 次
发布时间:2019-06-14

本文共 1208 字,大约阅读时间需要 4 分钟。

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);

转载于:https://www.cnblogs.com/insignificant-malt/p/8528882.html

你可能感兴趣的文章
flask信号
查看>>
SQLAlchemy中scoped_session实现线程安全
查看>>
css在各浏览器中的兼容问题
查看>>
TEXTBOX的TextMode为MultiLine时,读取页面框体被撑大的解决方案!
查看>>
Performance comparison Raw device VS Ext2 VS Ext3 VS OCFS
查看>>
string[] 和 arraylist互转及问题解决
查看>>
Python os模块
查看>>
POJ 1226 Substrings
查看>>
HDU 3480 Division
查看>>
Jquery enter事件绑定
查看>>
UVALive 6529
查看>>
centos7 安装gitlab任意版本
查看>>
【黑金原创教程】【TimeQuest】【第一章】TimeQuest 静态时序分析模型的概念
查看>>
韦到头打印链表
查看>>
如何面对故障
查看>>
Objective-C的反射机制
查看>>
图书馆管理
查看>>
Binary String Matching(kmp+str)
查看>>
题解 P4092 【[HEOI2016/TJOI2016]树】
查看>>
bzoj2142: 礼物
查看>>