Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较属性并返回关联的同级_Javascript_Object - Fatal编程技术网

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