ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了)。上一次标准的制订还是2009年出台的ES5。目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本。但大部分标准已经就绪,且各浏览器对ES6的支持也正在实现中。
ES6给数组添加了一些新特性,而这些新特性到目前为止完全可以运用到自己的业务层。在这一节中将总结有关于ES6给数组提供一些新特性的使用方法。
ES6提供的两个静态方法:
Array.from
Array.of
ES6提供操作、填充和过滤数组的方法:
Array.prototype.copyWidthin
Array.prototype.fill
Array.prototype.find
Array.prototype.findIndex
ES6中有关于数组迭代的方法:
Array.prototype.keys
Array.prototype.values
Array.prototype.entries
Array.prototype[Symbol.iterator]
接下来主要看看这些方法的使用。
Array.from()
Array.from()方法主要用于将两类对象(类似数组的对象[array-like object]和可遍历对象[iterable])转为真正的数组。
在ES5中常常使用下面这样的方法将一个类似数组的对象转换成一个数组:
function cast () {return Array.prototype.slice.call(arguments);}cast('a','b','c','d'); // ["a", "b", "c", "d"]
或者你也可以写成:
function cast () {return [].slice.call(arguments);}cast('a','b','c','d'); // ["a", "b", "c", "d"]
在ES6中可以使用Array.from将一个类似数组的对象转换为一个真正的数组。
所谓类似数组的对象,本质特征只有一点,即必须有length属性。因此,任何有length属性的对象都是类似数组对象,都可以通过Array.from方法将其转换成一个真正的数组。
let arrayLike = {'0': 'a','1': 'b','2': 'c',length: 3}console.log(Array.from(arrayLike)); // ["a","b","c"]
在ES6中,扩展运算符(...)也可以将某些数据结构转为数组。只不过它需要在背后调用遍历器接口Symbol.iterator。
function cast (){return [...arguments]}cast('a','b','c'); // ["a","b","c"]
值得注意的是如果一个对象没有部署遍历器接口,使用扩展运算符是无法将类似数组对象转换成数组。
Array.from接受三个参数,但只有input是必须的:
input: 你想要转换的类似数组对象和可遍历对象
map: 类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组
context: 绑定map中用到的this
只要是部署了iterator接口的数据结构,Array.from都能将其转为数组:
let arr = Array.from('w3cplus.com')console.log(arr); // ["w","3","c","p","l","u","s",".","c","o","m"]let namesSet = new Set(['a', 'b'])let arr2 = Array.from(namesSet) console.log(arr2); //["a","b"]
新闻热点
疑难解答
图片精选