在 ES10 中,JavaScript 引入了两个新的数组方法:Array.from 和 Array.of。这两个方法在数组的创建和转换上都有着重要的作用。虽然它们都是用来创建数组的方法,但是它们的用法有所不同。在本文中,我们将比较这两种方法的使用方法,以及它们的优缺点。
Array.from 方法
Array.from 方法用于将类似数组的对象和可迭代对象转换为真正的数组。它接收两个参数:第一个参数是要转换的对象,第二个参数是一个可选的映射函数,用于对每个元素进行转换。
下面是一个使用 Array.from 方法的示例:
const str = 'hello'; const arr = Array.from(str); console.log(arr); // ['h', 'e', 'l', 'l', 'o']
在这个例子中,我们将一个字符串转换为了一个数组。如果没有传入第二个参数,Array.from 方法将返回一个与原始对象具有相同元素的新数组。
如果我们想对数组中的元素进行处理,可以传入一个映射函数。例如:
const arr = [1, 2, 3]; const newArr = Array.from(arr, x => x * 2); console.log(newArr); // [2, 4, 6]
在这个例子中,我们将数组中的每个元素乘以 2。映射函数的第一个参数是当前元素的值,第二个参数是当前元素的索引。
Array.of 方法
Array.of 方法用于创建一个新的数组,它接收任意数量的参数,并将它们作为数组的元素。与 Array.from 方法不同,Array.of 方法不会将参数转换为数组,而是直接创建一个新的数组。
下面是一个使用 Array.of 方法的示例:
const arr = Array.of(1, 2, 3); console.log(arr); // [1, 2, 3]
在这个例子中,我们使用 Array.of 方法创建了一个包含三个元素的数组。
优缺点对比
Array.from 和 Array.of 方法都有其优缺点。下面是它们的对比:
Array.from 方法的优点
- 可以将类似数组的对象和可迭代对象转换为真正的数组。
- 可以对数组中的元素进行处理,例如过滤和映射。
- 可以使用第二个参数来指定映射函数。
Array.from 方法的缺点
- 需要额外的函数调用,相比直接创建数组需要更多的代码。
Array.of 方法的优点
- 可以直接创建新的数组,不需要转换。
- 可以接收任意数量的参数。
Array.of 方法的缺点
- 不能处理类似数组的对象和可迭代对象。
结论
在使用 Array.from 和 Array.of 方法时,需要根据实际情况来选择。如果需要将类似数组的对象和可迭代对象转换为真正的数组,并且需要对数组中的元素进行处理,那么应该使用 Array.from 方法。如果只需要创建一个新的数组,并且不需要对数组中的元素进行处理,那么应该使用 Array.of 方法。
无论选择哪种方法,都应该根据实际情况来进行选择,以确保代码的简洁和清晰。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675647e03af3f99efe5a01d3