在 ES7 中,新增了 Array.prototype.values 方法和 Array.prototype.keys 方法,它们的作用都是遍历数组,但两者之间有一些不同。在本文中,我们将讨论这两个方法的区别,并提供一些示例代码。
Array.prototype.keys()
Array.prototype.keys() 方法返回一个 Array Iterator 对象,该对象包含数组的键(也就是数组的下标)。换句话说,这个方法返回一个包含数组索引的迭代器,它可以用于遍历数组的索引。
示例代码:
const array = ['a', 'b', 'c']; const keys = array.keys(); console.log(keys.next()); // {done: false, value: 0} console.log(keys.next()); // {done: false, value: 1} console.log(keys.next()); // {done: false, value: 2} console.log(keys.next()); // {done: true, value: undefined}
从上面的示例代码可以看出,Array.prototype.keys() 返回的是一个迭代器对象,我们可以通过调用next()方法来获取与数组索引对应的键值对。next()方法返回一个对象,该对象有两个属性,done 和 value。done 属性表示是否已经遍历完所有的元素,value 属性表示当前遍历到的元素的键值。
Array.prototype.values()
Array.prototype.values() 方法返回一个 Array Iterator 对象,该对象包含数组的值。换句话说,这个方法返回一个包含数组元素值的迭代器,它可以用于遍历数组的元素。
示例代码:
const array = ['a', 'b', 'c']; const values = array.values(); console.log(values.next()); // {done: false, value: "a"} console.log(values.next()); // {done: false, value: "b"} console.log(values.next()); // {done: false, value: "c"} console.log(values.next()); // {done: true, value: undefined}
从上面的示例代码可以看出,Array.prototype.values() 返回的是一个迭代器对象,我们可以通过调用next()方法来获取与数组元素对应的键值对。next()方法返回一个对象,该对象有两个属性,done 和 value。done 属性表示是否已经遍历完所有的元素,value 属性表示当前遍历到的元素的值。
总结
总之,Array.prototype.keys() 和 Array.prototype.values() 方法都是用于遍历数组的方法,区别在于返回的迭代器对象包含的是数组索引(keys())还是数组元素(values())。这两个方法的应用场景取决于你要遍历的是数组的索引还是数组的元素。对于数组的元素,我们推荐使用 Array.prototype.values() 方法,因为它返回的是数组元素,更符合实际应用场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d1d5fcb5eee0b52592ac5d