我们说我有任意数量的对象:
obj1 = {
name: "Fred",
score: 1
}
obj2 = {
name: "Steve",
score: 2
}
obj3 = {
name: "Billy",
score: 3
}
我想轻松比较每个对象的score
属性,然后返回得分最高的对象的name
属性。我不完全确定如何轻松找到任意大数字组的最高值,但我确定我会在时机成熟时弄明白。我真正的问题是如何在找到最高分后,返回与该分数的父对象相关联的名称。 (如果有时间,我的课程应该返回所有最高分。)
答案 0 :(得分:2)
以下是使用Array.prototype.reduce
的解决方案。
JSBIN:
http://jsbin.com/cepofigomu/edit?html,js,console,output
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
var data = [
{
name: "Fred",
score: 1
},
{
name: "Steve",
score: 2
},
{
name: "Billy",
score: 3
}
];
var out = data.reduce(function(a, b){
return a.score > b.score ? a:b ;
}, {});
console.log(out);
答案 1 :(得分:0)
抱歉,我只读了你写完一个例子后没有jQuery可用。 你应该能够将它翻译成纯粹的javascript。
https://jsfiddle.net/q2x9phf5/
var scores = [];
scores.push({
name: "Fred",
score: 1
});
scores.push({
name: "Steve",
score: 2
});
scores.push({
name: "Billy",
score: 3
});
var highestScore = 0;
$.each(scores, function(index, person) {
highestScore = Math.max(highestScore, person.score);
});
var peopleWithHighestScore = $.grep(scores, function(person) {
return person.score === highestScore;
});