【问题标题】:Selecting an Object with the Highest Value in a Multidimensional Array在多维数组中选择具有最高值的对象
【发布时间】:2018-06-17 01:05:00
【问题描述】:

我正在尝试找出选择具有最高特定属性值(在本例中为错误答案的数量)的对象并返回另一个属性(名称)的最佳方法。例如。以下对象应返回 Mark:

[
{name: "Henry", age: "NYN", attempts: 3, wrong: 2},
{name: "Mark", age: "NNNY", attempts: 4, wrong: 3},
{name: "Beth", age: "", attempts: 0, wrong: 0},
{name: "Sally", age: "YYNY", attempts: 4, wrong: 1},
]

解决这个问题的最佳方法是什么(在 JavaScript 中)?感谢您的帮助!

【问题讨论】:

标签: javascript arrays oop


【解决方案1】:

这里有一个简单的方法:

var objArray=[
{name: "Henry", age: "NYN", attempts: 3, wrong: 2},
{name: "Mark", age: "NNNY", attempts: 4, wrong: 3},
{name: "Beth", age: "", attempts: 0, wrong: 0},
{name: "Sally", age: "YYNY", attempts: 4, wrong: 1},
];
function getNameOfMostWrong(){
  //Set first object in array for most wrong as default
  var mostWrongPerson=objArray[0];
  for(var person in objArray){
    if(objArray[person].wrong > mostWrongPerson.wrong){
      mostWrongPerson=objArray[person];
    }
  }
  return mostWrongPerson.name;
}

【讨论】:

    【解决方案2】:

    您可以制作简单的 for 循环来检查最高的 wrong 值并选择该对象。这将具有O(n) 的复杂度,类似于线性搜索算法。

    var arr = [
    {name: "Henry", age: "NYN", attempts: 3, wrong: 2},
    {name: "Mark", age: "NNNY", attempts: 4, wrong: 3},
    {name: "Beth", age: "", attempts: 0, wrong: 0},
    {name: "Sally", age: "YYNY", attempts: 4, wrong: 1},
    ];
    
    var highest = arr[0].wrong, index;
    for(var i=1; i<arr.length; i++){
      if(arr[i].wrong > highest){
         highest = arr[i];
         index = i;
      }
    }
    var highestWrong = arr[index];
    console.log('highest wrong attempt is done by', highestWrong.name);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-06
      • 2012-07-23
      • 2013-09-28
      • 2021-12-06
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多