Javascript 比较属性并返回关联的同级
假设我有任意数量的对象:Javascript 比较属性并返回关联的同级,javascript,object,Javascript,Object,假设我有任意数量的对象: obj1 = { name: "Fred", score: 1 } obj2 = { name: "Steve", score: 2 } obj3 = { name: "Billy", score: 3 } 我想简单地比较这些对象的score属性,然后返回得分最高的对象的name属性。我不完全确定如何轻松地找到任意大的一组数字的最高值,但我相信到时候我会找到的。我真正的问题是,在找到最高分数后,如何返回与该分数的父对
obj1 = {
name: "Fred",
score: 1
}
obj2 = {
name: "Steve",
score: 2
}
obj3 = {
name: "Billy",
score: 3
}
我想简单地比较这些对象的
score
属性,然后返回得分最高的对象的name
属性。我不完全确定如何轻松地找到任意大的一组数字的最高值,但我相信到时候我会找到的。我真正的问题是,在找到最高分数后,如何返回与该分数的父对象关联的名称。(如果有时间,我的程序应该返回所有最高分。)这里有一个使用Array.prototype.reduce的解决方案
JSBIN:
下面是一个使用Array.prototype.reduce
的解决方案
JSBIN:
抱歉,我只是在写完一个示例后才看到您没有jQuery可用。
不过,您应该能够将其转换为纯javascript
抱歉,我只是在写完一个示例后才看到您没有jQuery可用。
不过,您应该能够将其转换为纯javascript
有jQuery可用吗?如果有超过一个人拥有相同的最高分数,该怎么办?“我真正的问题是,在找到最高分数后,如何通过返回对象的name
属性来返回名称”,即:obj.name
@PatrickEvans是的,但我不一定“知道”该对象的名称。在评估大量分数后,我需要以某种方式保留对象的名称。这些对象是否在列表/数组中?“我不一定‘知道’”为了比较score
属性,您必须已经有权访问该对象,只需使用从中获得分数的同一个对象,您是否有可用的jQuery?如果有超过一个人拥有相同的最高分数,该怎么办?“我真正的问题是,在找到最高分数后,如何通过返回对象的name
属性来返回名称”,即:obj.name
@PatrickEvans是的,但我不一定“知道”该对象的名称。在评估大量分数后,我需要以某种方式保留对象的名称。这些对象是否在列表/数组中?“我不一定‘知道’”为了比较score
属性,您必须已经有权访问该对象,只需使用从中获得分数的同一个对象,如果平局,该对象将仅返回1人。如果平局,该对象将仅返回1人。
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);
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;
});