今天來讲解一个数组遍历的新方法,这是ES5推出的新属性。
文章有些摘自阮一峰老师的《ECMAScript 6 入门》一文
Array.of()
语义:方法用于将一组值,转换为数组。(创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。)
语法:
Array.of(element0[, element1[, ...[, elementN]]])
参数:
elementN:任意个参数,将按顺序成为返回数组中的元素。
返回值:
新的数组。
栗子一:
Array.of()
Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1
这个方法的主要目的,是弥补数组构造函数Array()
的不足。因为参数个数的不同,会导致Array()
的行为有差异。
Array()
Array() // []
Array(3) // [, , ,]
Array(3, 11, 8) // [3, 11, 8]
栗子二:
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
上面代码中,Array
方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于 2 个时,Array()
才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度。
Array.of
基本上可以用来替代Array()
或new Array()
,并且不存在由于参数不同而导致的重载。它的行为非常统一。
Array.of() // []
Array.of(undefined) // [undefined]
Array.of(1) // [1]
Array.of(1, 2) // [1, 2]
Array.of
总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
兼容旧环境
如果原生不支持的话,在其他代码之前执行以下代码会创建 Array.of()
。
if (!Array.of) {
Array.of = function() {
return Array.prototype.slice.call(arguments);
};
}
Array.from()
语义:Array.from
方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。
语法:
Array.from(arrayLike[, mapFn[, thisArg]])
参数:
arrayLik