如何在不可变的`forEach`迭代中获取索引

时间:2018-08-02 14:45:05

标签: javascript object immutable.js

在原生JavaScript Array.forEach回调函数中,我们的参数为:currentValue[, index[, array]]

Immutable.js forEach中,我似乎无法获取索引值。我认为它曾经遵循Array.forEach的模式,但是,他们已经对其进行了更改。

我的问题是:如何在index的每次迭代中得到forEach。我们是否要手动增加一个外部(函数外部)变量以存储值?

示例代码:

const anObj = Map({
 a : "a",
 b : "b"
});
let i;
// immutable.js way
anObj.forEach((v, k, collection ) => {
 // body of func
}

2 个答案:

答案 0 :(得分:1)

var index = anObj.indexOf(v);

应返回给定值的索引。 与增量变量相比,效率可能较低。

答案 1 :(得分:0)

https://github.com/facebook/immutable-js/issues/586

不幸的是,似乎开发团队决定根据上述链接偏离本机Javascript签名。因此,根据LeeByron的评论,实质上是推荐的方法:

var index = 0;
myOrderedMap.forEach(function (item) {
  // do what you need to do with item and index
  index += 1;
});