在 Javascript 中,数组是一种十分常用的数据结构。ES6 提供了一些非常方便的数组相关的方法,但是仍然存在一些场景下需要创建数组,同时也需要指定初始值的情况。这时候,我们可以使用 ES7 中的 Array.of 方法来实现。
Array.of 方法的定义与用法
Array.of 方法用于创建一个由参数组成的新数组,而且不管传入的参数是什么类型,都会被转化为数组的元素。其定义如下:
Array.of(element0[, element1[, ...[, elementN]]])
调用 Array.of 方法时,我们可以传入任何类型的参数。这些参数会被转化成数组的元素,并作为一个新数组返回。
Array.of 方法与 Array 构造函数的区别
在 ES6 中,我们通常使用 Array 构造函数来创建数组。但是 Array 构造函数存在一个问题,当你传入的参数只有一个时,它会将参数作为数组的长度值。而如果传入的参数是一个数字时,可能会与我们预期的结果不一致,导致出现问题。
比如,我们在使用 Array 构造函数创建一个包含 3 个元素的数组时,不能直接使用下面的代码:
var arr = new Array(3); // 这样的结果可能是不正确的
因为这个语句创建的数组不是包含 3 个元素的数组,而是一个长度为 3 的空数组。而如果我们使用 Array.of 方法,则不会出现这样的问题。
我们可以通过下面的示例代码来看看 Array.of 方法和 Array 构造函数的区别:
var arr1 = Array.of(3); // [3] var arr2 = new Array(3); // [undefined, undefined, undefined]
如上所示,使用 Array.of 方法创建的数组只包含一个元素,而使用 Array 构造函数创建的数组包含了 3 个未定义的元素。
Array.of 方法的应用
除了使用 Array.of 方法来解决 JavaScript 中创建数组时的问题,它还能用来方便地将一组值转化为数组。比如,我们可以将一些 Node 对象作为参数传入 Array.of 方法来创建一个 Node 对象数组,如下所示:
var nodes = Array.of(document.body, document.head, document.getElementById('content')); console.log(nodes);
上面的代码将使用 Array.of 方法创建了一个包含 3 个 Node 对象的数组,并将其打印在控制台中。我们也可以使用 Array.from 方法来实现同样的效果,不过它需要多一步显式地进行类型转换,比较麻烦。
除此之外,我们也可以使用 Array.of 方法来方便地操作函数的参数。比如,在以下示例中我们定义了一个函数,它接受一个参数,并将其转化成数组:
function toArray(item) { return Array.of(item); } console.log(toArray(2));
上面的代码将输出一个包含 1 个元素的数组 [2]
。
总结
在 JavaScript 中,Array.of 方法能够帮助解决使用 Array 构造函数时出现的问题,同时也可以方便地将一组值转化为数组,更加便利地操作函数参数。虽然在实际应用中使用频率不是特别高,但它仍然是一个十分有用的工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64606f44968c7c53b021e09e