Array.prototype.keys()、Array.prototype.values()和Array.prototype.entries()
Array.prototype.keys()
keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。
此方法是ES6方法。
此方法不会改变数组。
返回值是一个新的 Array 迭代器对象。
var arr = ["a", , "c"]; var sparseKeys = Object.keys(arr); var denseKeys = [...arr.keys()]; console.log(sparseKeys); // ['0', '2'] console.log(denseKeys); // [0, 1, 2]
Array.prototype.values()
values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值
此方法是ES6方法。
此方法不会改变数组。
此方法不会改变数组。
let arr = ['w', 'y', 'k', 'o', 'p']; let eArr = arr.values(); // 您的浏览器必须支持 for..of 循环 // 以及 let —— 将变量作用域限定在 for 循环中 for (let letter of eArr) { console.log(letter); }
另一种迭代方式
let arr = ['w', 'y', 'k', 'o', 'p']; let eArr = arr.values(); console.log(eArr.next().value); // w console.log(eArr.next().value); // y console.log(eArr.next().value); // k console.log(eArr.next().value); // o console.log(eArr.next().value); // p
Array.prototype.entries()
entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
此方法是ES6方法。
此方法不会改变数组。
var arr = ["a", "b", "c"]; var iterator = arr.entries(); // undefined for (let e of iterator) { console.log(e); } // [0, "a"] // [1, "b"] // [2, "c"]