OrderedMap中项目的索引

时间:2015-09-10 20:27:14

标签: javascript immutable.js

正如标题所述,我想获得特定项目的索引。有没有办法做到这一点?

const key = 1
const map = new Immutable.OrderedMap([5, 'a'], [3, 'b'], [1, 'c'])

因此,在这种情况下,key的索引将是2

3 个答案:

答案 0 :(得分:3)

您可以从地图中获取按键序列:

let index = map.keySeq().findIndex(k => k === key);

See the docs for more info.

或者,您可以显式迭代键并比较它们:

function findIndexOfKey(map, key) {
    let index = -1;
    for (let k of map.keys()) {
        index += 1;
        if (k === key) {
            break
        }
    }
    return index;
}

答案 1 :(得分:3)

最好的方法就是使用immutablejs inners的方式。

像这样:

const index = orderedMap._map.get(k);

https://github.com/facebook/immutable-js/blob/master/src/OrderedMap.js#L43

答案 2 :(得分:0)

如果您需要键,值以及索引,则可以遍历entrySeq

orderedMap.entrySeq().forEach((tuple,i) => console.log(`Index ${i} \n Key ${tuple[0]} \n Value ${tuple[1]}`)