查找javascript地图的相邻条目?

时间:2015-07-17 23:42:24

标签: javascript

鉴于

var myMap = new Map()
myMap.set("alpha", "first")
myMap.set("beta", "second")
myMap.set("charlie", "third")
myMap.set("delta", "fourth")
myMap.set("echo", "fifth")
myMap.set("foxtrot", "sixth")

从给定的密钥开始...

myMap.get("charlie") //=> "third"

...我如何获得周围密钥的值?

// pseudo code
myMap.get("charlie").prev() //=> "second"
myMap.get("charlie").next() //=> "fourth"

理想情况下,我想在迭代myMap时这样做:

var valuesICareAbout = [];

myMap.forEach(function(value, key, map) {
  valuesICareAbout.push({
    callSign: key,
    callValue: value,
    nextCallValue: map.get(key).next(), // pseudo code
    prevCallValue: map.get(key).prev()  // pseudo code
  });
});

在我的实际用例中,Map的键是DOM节点,我需要兄弟姐妹来计算位置偏移。预计地图中第一个节点的prev值将为null,并且地图中最后一个节点的next值将为null。< / p>

那有道理吗?

1 个答案:

答案 0 :(得分:1)

如何简单地将地图的键迭代为数组?

var keys = Array.from(map.keys());
keys.forEach(function(key, i, keys) {
    var current = map.get(key);
    var previous = map.get(keys[i-1]);
    var next = map.get(keys[i+1]);
    // ...
});

(显然必须考虑到这里的第一个和最后一个元素)

如果这仅适用于内部代码,您还可以考虑使用自己的forEach实现来扩展现有的Map类,该实现将上一个和下一个值传递给回调。