在ES6中,我们已经看到了许多新的Array方法,诸如map, filter, reduce等,它们极大地简化了数组操作。然而,ES7引入了Array.prototype.values
方法,使我们能够更轻松地遍历数组的所有值,让我们更好地理解这个方法。
什么是Array.prototype.values?
Array.prototype.values
方法通过返回一个新的数组值迭代器,使我们能够按顺序访问一个数组的每个值。它返回一个生成器对象,可以用于迭代中获取当前的数组值。这个方法和ES6的Array.prototype.keys
方法和Array.prototype.entries
方法类似。
在此之前,我们可能会使用for...of
循环遍历数组。例如:
let arr = [1, 2, 3]; for (let num of arr) { console.log(num); }
输出结果将是:
1 2 3
而当我们使用Array.prototype.values
时,上面的循环可以被转化为:
let arr = [1, 2, 3]; let iterator = arr.values(); for (let value of iterator) { console.log(value); }
输出结果仍然是:
1 2 3
为什么我们需要Array.prototype.values?
那么,我们为什么还需要Array.prototype.values
呢?现在,我们只有一个很小的数组,所以我们能够很容易地使用for...of
循环。但是如果我们有一个非常庞大的数组,这将很慢和非常占用内存,因为for...of
每次都为全量的数组分配了一个迭代器。
使用Array.prototype.values
方法,我们可以避免这个问题并提高性能。原因在于,它只返回迭代器,而不是整个数组。我们可以在循环的每一个迭代器中处理每个值,而不是一次性处理完整个数组。这将节省大量的内存和提高性能,特别是在处理大型数组时。
在代码中使用Array.prototype.values
现在,我们来看看如何在代码中使用Array.prototype.values
方法。
let arr = [1, 2, 3]; let iterator = arr.values(); console.log(iterator.next().value); // 1 console.log(iterator.next().value); // 2 console.log(iterator.next().value); // 3 console.log(iterator.next().value); // undefined
注意,当我们迭代整个数组时,最后一个console.log
将返回undefined
,因为最后一个值已经被处理完成并从迭代器中移除了。
结论
在本文中,我们已经学习了Array.prototype.values
方法,这是ES7中最新的JavaScript中的一个有用增强。我们也学习了它的用法和为什么我们需要它。在使用JavaScript时,Array.prototype.values
可能会成为日常工作中非常有用的工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670b265fd91dce0dc887d558