OrderedMap 中某项的索引

The index of an item in OrderedMap

如标题所述,我想获取特定项目的索引。有办法吗?

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

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

您可以从映射中获取键序列:

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;
}

最好的方法就是 immutablejs inners 的做法。

像这样:

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

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

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

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