Array.prototype.entries()

147 阅读1分钟

entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。

截屏2022-02-09 下午2.52.20.png

返回值是一个新的 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
         nextnext()
         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))