Javascript:在Map()与Object中查找最高值



我一直在使用对象作为哈希表,并通过Objects.keys(foo).reduce((a,b) => foo[a] > foo[b] ? a : b)从中获得最高值。然而,我已经改用Maps((。迭代Map对象以获得最高值的理想方法是什么?

您可以将values()扩展到Math.max:

let m = new Map([['a', 2], ['b',4], ['c',6]])
console.log("Max:", Math.max(...m.values()))

如果您同时需要密钥和值,我认为您将返回到reduce(),使用entries()进行映射:

let m = new Map([['a', 2], ['b',4], ['c',6]])
console.log([...m.entries()].reduce((a, e ) => e[1] > a[1] ? e : a))

我不知道map比以前的方法改进了多少,但这里是遍历map对象的方法。

// create map
var myMap = new Map();
// add key value pairs
myMap.set('twelve', 12);
myMap.set('two', 2);
myMap.set('eleven', 11 );
myMap.set('three', 3);
var getMax1 = function (someMap) {
var maxValue;
for (var [key, value] of someMap) {
maxValue = (!maxValue || maxValue < value) ? value : maxValue;
}
return maxValue;
}
var getMax2 = function (someMap) {
var maxValue;
for (var key of someMap.keys()) {
var value = someMap.get(key);
maxValue = (!maxValue || maxValue < value) ? value : maxValue;
}
return maxValue;
}
console.log(getMax1(myMap)); // 12
console.log(getMax2(myMap)); // 12

最新更新