javascript – 获取Map.prototype.forEach()中的索引

Map.prototype.forEach采用两个参数进行回调:值和键.
是否可以获取每个条目的索引,类似于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());

…并使用该数组的索引:

我只是不确定它是什么给你买的.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...