比较属性和返回相关的兄弟姐妹

时间:2016-10-20 01:49:22

标签: javascript object

我们说我有任意数量的对象:

obj1 = {
    name: "Fred",
    score: 1
}

obj2 = {
    name: "Steve",
    score: 2
}

obj3 = {
    name: "Billy",
    score: 3
}

我想轻松比较每个对象的score属性,然后返回得分最高的对象的name属性。我不完全确定如何轻松找到任意大数字组的最高值,但我确定我会在时机成熟时弄明白。我真正的问题是如何在找到最高分后,返回与该分数的父对象相关联的名称。 (如果有时间,我的课程应该返回所有最高分。)

2 个答案:

答案 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;
});