我有兴趣知道如何打印保存最大值的key
。以下是一些条件,
- 如果我们有所有键中的最大值,则返回该值。示例:返回
c
及其值4
来自{a: 2, b:1, c:4, d:1}
- 如果我们有两个键具有相同的值并且它们是最大值,则返回两个键及其值。示例:从
{ a: 4, b: 4, c:2, d:1 返回值为
4
的a
和b
} - 在上述情况下,顺序应为
a
然后c
。 - 如果所有键都具有相同的值,则返回 false 或零或除 1 之外的其他值。示例:
{a: 1, b:1, c:1, d:1}
代码块:
let obj = {
a: 4,
b: 4,
c: 2,
d: 1
};
let maxValueKey = Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b);
console.log(maxValueKey);
注意:如果您能告诉我为什么 -ve
投票,我将不胜感激。
最佳答案
您可以使用 array#reduce
和 Object.keys()
来查找最大值键并将其存储在数组中。
let maxValueKey = (o) => Object.keys(o).reduce((a, k, i, keys) => {
if (!i || a.value < o [k]) {
a.max.length = 0;
a.max.push(k);
a.value = o[k];
} else if (a.value === o[k]) {
a.max.push(k);
}
if (a.max.length === keys.length) {
a.max.length = 0;
a.value = 'All equal';
}
return a;
}, {max : [], value: undefined});
console.log(maxValueKey({ a: 4, b: 4, c:2, d:1 }));
console.log(maxValueKey({ a: 1, b:1, c:1, d:1 }));
console.log(maxValueKey({ a: 2, b:1, c:4, d:1 }));
console.log(maxValueKey({ a: 2, b:1 }));
关于javascript - 找到持有键的最大值,从而从 JavaScript 中的键/值对中进行绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176712/