Map.prototype.forEach采用两个参数进行回调:值和键.
是否可以获取每个条目的索引,类似于Array.prototype.forEach((value,index)=> {})
是否可以获取每个条目的索引,类似于Array.prototype.forEach((value,index)=> {})
解决方法
Map.prototype.forEach
takes callback with two params: value and key.
不,它是invoked with three arguments,就像Array#forEach一样.第三是地图.
Is it possible to get the index of each entry,similar to
Array.prototype.forEach(functcion(value,index) => {})
(相当确定其中的功能部分并不意味着存在.)
这就是关键所在.没有单独的“索引”.
Map的迭代顺序是为各种迭代操作定义的,但是没有直接的迭代结构可以为您提供该顺序中条目的索引(而不是键).订单是原始密钥插入顺序,例如:
const m = new Map(); m.set("x",1); m.set("q",2); m.set("z"),3); m.set("x","one");
如果我们遍历该映射,我们将按照键首次添加的顺序看到键,因此“x”,“q”,“z”.请注意,使用ke“x”更改条目的值不会将其移动到结尾.
Map#forEach
(和for-of以及使用map迭代器的任何其他内容)遵循迭代顺序,因此如果您根据该顺序考虑索引,则可以自己跟踪索引:
const m = new Map(); m.set("one","uno"); m.set("two","due"); m.set("three","tre"); let index = 0; m.forEach((value,key) => { console.log(index++,key,value); });
或者,您可以获取一个映射条目数组(作为[key,value]数组):
let entries = Array.from(m.entries());
…并使用该数组的索引:
我只是不确定它是什么给你买的.