×

学下一个js数组迭代方法:entries()

作者:ceshi2021.11.11来源:Web前端之家浏览:4521评论:0
关键词:js

学下一个js数组迭代方法:entries()。

entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)

迭代对象中数组的索引值作为 key, 数组元素作为 value。它的原型(__proto__:Array Iterator)上有一个next方法,可用用于遍历迭代器取得原数组的[key,value] 。这里需要知道相关迭代器的知识。

返回迭代器对象

var arr = ["red", "blue", "green"]
var x = arr.entries()
console.log(x); // Array Iterator {}
console.log(x.next()) //{value: Array:[0, "red"],done:false}
console.log(x.next()) //{value: Array:[1, "blue"],done:false}
console.log(x.next()) //{value: Array:[2, "green"],done:false}
console.log(x.next()) //{value: undefined, done: true}

for...of...的使用

const options = [1, , , , 5];
for (const [index, value] of options.entries()) {
  console.log(value);
}
// 0 1
// 1 undefined
// 2 undefined
// 3 undefined
// 4 5

二维数组行排序

function sortTwo(arr) {
  var entries = arr.entries()
  var flag = true
  while (flag) {
    var res = entries.next()
    if (!res.done) {
      res.value[1].sort((a, b) => a - b);
      flag = true
    } else {
      flag = false
    }
  }
  return arr
}
var arr = [[1, 3, 2], [44, 33], [11, 55, 44, 33]]
sortTwo(arr)
console.log(arr);// [[1, 2, 3], [33, 44], [11, 33, 44, 55]]

上面的代码中 sortTwo 方法中首先获取传入数组的迭代对象,然后通过定义一个初始化标识为 true,通过递归调用迭代对象 entires next 方法赋值给 res 对象,判断res对象的d one 属性,若该值为 true 表示可以递归,res.value 对应的是二维数组的每一行,对该项进行排序即可,若值为 flase 表示结束递归。

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/js20211111a1.html

网友评论文明上网理性发言 已有0人参与

发表评论: