entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
返回值是一个新的 Array 迭代器对象。Array Iterator是对象,它的原型__proto__:Array Iterator上有一个next方法,可用用于遍历迭代器取得原数组的[key, value]。
Array Iterator
var arr = ["a", "b", "c"];
var iterator = arr.entries();
console.log(iterator);
/*Array Iterator {}
__proto__:Array Iterator
next:ƒ next()
Symbol(Symbol.toStringTag):"Array Iterator"
__proto__:Object
*/
iterator.next()
var arr = ["a", "b", "c"];
var iterator = arr.entries();
console.log(iterator.next());
/*{value: Array(2), done: false}
done:false
value:(2) [0, "a"]
__proto__: Object
*/
// iterator.next()返回一个对象,对于有元素的数组,
// 是next{ value: Array(2), done: false };
// next.done 用于指示迭代器是否完成:在每次迭代时进行更新而且都是false,
// 直到迭代器结束done才是true。
// next.value是一个["key","value"]的数组,是返回的迭代器中的元素值。
entires实现二维数组排序
function sortArr(arr) {
let doNext = true
let iter = arr.entries()
while(doNext) {
let res = iter.next()
if (!res.done) {
res.values[1].sort((a, b) => a - b)
doNext = true
} else {
doNext = false
}
}
return arr
}
const arr = [
[1, 22, 33, 2],
[3, 4, 22, 1, -3],
[5, 1, 44, 11, 445]
]
console.log(sortArr(arr))