我想知道一种打印保留最大值的key
的方法。以下是一些条件,
c
,其值为4
中的{a: 2, b:1, c:4, d:1}
a
b
的{{1}}和4
{ a: 4, b: 4, c:2, d:1 }
,然后依次为a
。 c
代码块:
{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);
投票,将不胜感激?
答案 0 :(得分:4)
您可以将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 }));
答案 1 :(得分:1)
这可以-
let obj = { a: 4, b: 4, c:2, d:1 }
var maxValueKey = Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b);
var t=[];
var e=Object.keys(obj);
e.forEach((r)=>{
if(obj[r]==obj[maxValueKey])
t.push(r);
})
alert(t)