从对象数组中的对象属性返回最大数字

时间:2016-05-02 17:48:47

标签: javascript arrays

我想从对象数组中的Object中提取数据。 这就是它现在的样子:

Object
 0: Object
     id: "e0"
     score: 0
 1: Object
     id: "e1"
     score: 1
 2: Object
     id: "e2"
     score: 2
 3: Object
     id: "e3"
     score: "-"
 4: Object
     id: "e4"
     score: "-"

问题:
如何获得最高得分值(2)并将其保存到变量? 请注意,还有" - "。

4 个答案:

答案 0 :(得分:1)

该示例不是JavaScript中的对象数组。你展示的是一个使用数字作为键的对象。如果您想要从您显示的对象中检索最高score值,则可以使用for..in构造迭代对象的可枚举属性。

因此,您必须遍历该对象,将您正在检查的当前score与存储的最大值进行比较:

var max = 0;
for (var key in obj) {
    if (obj[key].score && typeof obj[key].score === 'number' && obj[key].score > max) {
        max = obj[key].score;
    }
}

答案 1 :(得分:1)

你可以通过这样的方式处理数组:

var scores = [
  { id: 'e0', score: '2' },
  { id: 'e1', score: '0' },
  { id: 'e2', score: '-' },
  { id: 'e3', score: '1' }
];

scores
  .map(obj => parseInt(obj.score))                 // Transform each score to Integers
  .filter(val => !isNaN(val))                      // Filter the "Non Integer" values
  .reduce((acc, val) => Math.max(acc, val), -1);   // Find the highest value

答案 2 :(得分:0)

你可以遍历数组,如果分数大于你之前遇到的值,则存储分数:

.reloc

答案 3 :(得分:0)

您可以使用security vulnerability

var items = [{id: "e0", score:  '-' }, {id: "e1", score:  1 }, {id: "e2", score: 2},
             {id: "e3", score: "-"}, {id: "e4", score: "-"}];

var max_score = items.reduce(function(previousValue, currentValue, currentIndex, arr) {
  if (isNaN(previousValue.score)) { 
    return currentValue;
  }
  if (isNaN(currentValue.score)) { 
    return previousValue;
  }
  return (currentValue.score > previousValue.score) ? currentValue : previousValue;
}).score;


document.write('Reuslt = ' + max_score);