码迷,mamicode.com
首页 > 编程语言 > 详细

ES6 数组的扩展

时间:2017-07-06 13:21:20      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:接受   like   rgs   对象   bsp   导致   nbsp   数据结构   ret   

Array.from()

Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。

 1 let arrayLike = {
 2     ‘0‘: ‘a‘,
 3     ‘1‘: ‘b‘,
 4     ‘2‘: ‘c‘,
 5     length: 3
 6 };
 7 
 8 // ES5的写法
 9 var arr1 = [].slice.call(arrayLike); // [‘a‘, ‘b‘, ‘c‘]
10 
11 // ES6的写法
12 let arr2 = Array.from(arrayLike); // [‘a‘, ‘b‘, ‘c‘]

实际应用中,常见的类似数组的对象是DOM操作返回的NodeList集合,以及函数内部的arguments对象。Array.from都可以将它们转为真正的数组。

// NodeList对象
let ps = document.querySelectorAll(‘p‘);
Array.from(ps).forEach(function (p) {
  console.log(p);
});

// arguments对象
function foo() {
  var args = Array.from(arguments);
  // ...
}

上面代码中,querySelectorAll方法返回的是一个类似数组的对象,只有将这个对象转为真正的数组,才能使用forEach方法。

只要是部署了Iterator接口的数据结构,Array.from都能将其转为数组。

Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。

Array.from(arrayLike, x => x * x);
// 等同于
Array.from(arrayLike).map(x => x * x);

Array.from([1, 2, 3], (x) => x * x)
// [1, 4, 9]

 

Array.of()

Array.of方法用于将一组值,转换为数组。

Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1

Array.of基本上可以用来替代Array()new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一

//Array.of方法可以用下面的代码模拟实现。

function ArrayOf(){
  return [].slice.call(arguments);   // ES5的写法
}

 

ES6 数组的扩展

标签:接受   like   rgs   对象   bsp   导致   nbsp   数据结构   ret   

原文地址:http://www.cnblogs.com/guorange/p/7125644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!