学下一个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
表示结束递归。
网友评论文明上网理性发言 已有0人参与
发表评论: