获取 JavaScript hashmap/object 中具有最大值的键

Hit*_*ith 5 javascript reduce key object

例子:

hash = {'Apple':2, 'Orange' :1 , 'Mango' : 2}
Run Code Online (Sandbox Code Playgroud)

这里最大的键是 Apple 和 Mango。我如何编写一个函数,同时给出 Apple 和 Mango 作为答案。

我尝试过这样的事情:

Object.keys(hash).reduce(function(a, b){ return hash[a] > hash[b] ? a : b });
Run Code Online (Sandbox Code Playgroud)

但这只给出了苹果作为答案。

Rob*_*sen 4

您可以首先将最大值作为单独的操作计算,然后进行过滤:

const hash = {Apple: 2, Orange: 1, Mango: 2};

const max = Object.keys(hash).reduce((a, v) => Math.max(a, hash[v]), -Infinity);
const result = Object.keys(hash).filter(v => hash[v] === max);

console.log(result);
Run Code Online (Sandbox Code Playgroud)

简单且可读,但它需要额外的迭代,因此它不是最有效的实现。