我有一个这样的对象:
const users = {
adam: {
age: 28,
extraInfo: 'foobar',
},
brad: {
age: 31,
extraInfo: 'foobar',
},
jef: {
age: 12,
extraInfo: 'baarfoo',
},
};
如何检查哪个对象具有最高的值"age"属性并将此对象设置为常量?
我尝试过使用 Object.keys()、将数据扔到 Array 并减少,但最终,所有这些方法都没有按照我想要的方式工作。我已经在这个问题上停留了几个小时了。
您可以使用reduce函数查找年龄最高的对象。
基本上,reduce
函数将循环users
对象使用它的键,并将根据age
value.
这个解决方案的“关键”是:
const result = Object.keys(users). reduce((acc, curr) =>
acc.age ? (users[curr].age > acc.age ? users[curr] : acc) : users[curr], {});
这是如何运作的:
Object.keys(users):此函数返回特定对象的键数组(在您的情况下)["adam", "brad", "jef"]
.
The reduce
函数将循环键数组并保留accumulator
(当前最高年龄)和currentValue
(源数组中的当前项目Object.keys(users)
).
-
acc.age ? (users[curr].age > acc.age ? users[curr] : acc) : users[curr], {})
该条件评估当前值accumulator
and currentValue
const users = {
adam: {
age: 28,
extraInfo: 'foobar',
},
brad: {
age: 31,
extraInfo: 'foobar',
},
jef: {
age: 12,
extraInfo: 'baarfoo',
},
};
const result = Object.keys(users).reduce((acc, curr) =>
acc.age ? (users[curr].age > acc.age ? users[curr] : acc) : users[curr], {});
console.log(result)
建议的解决方案@irkeninvader using for-loop
:
const users = {
adam: {
age: 28,
extraInfo: 'foobar',
},
brad: {
age: 31,
extraInfo: 'foobar',
},
jef: {
age: 12,
extraInfo: 'baarfoo',
},
};
var maxAge;
for(var key in users){
if(!maxAge || users[key].age > maxAge.age){
maxAge = users[key];
}
}
console.log('Highest Age is:');
console.log(maxAge);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)