首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取对象中属性的最大值

获取对象中属性的最大值
EN

Stack Overflow用户
提问于 2017-08-03 14:06:43
回答 7查看 1.3K关注 0票数 0

我正在尝试获取对象中所有wins属性的最大值。以下是该对象的简短示例,我正在尝试获取wins属性的最大值,即11。

代码语言:javascript
复制
var coach_wins = {
  "player1": [
    {
      year: 2015,
      wins: 6
    },
    {
      year: 2016,
      wins: 6
    }
  ],
  "player2": [
    {
      year: 2015,
      wins: 11
    },
    {
      year: 2016,
      wins: 6
    }
  ]
};

目前我正在计算对象的长度,然后使用for循环遍历对象并获得键:

代码语言:javascript
复制
coach_wins[Object.keys(coach_wins)[i]];

然后再次执行此操作,并存储每个wins值的值;

有没有更有效的方法?

谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-08-03 14:26:39

代码语言:javascript
复制
var coach_wins = {
  "player1": [
    {
      year: 2015,
      wins: 6
    },
    {
      year: 2016,
      wins: 6
    }
  ],
  "player2": [
    {
      year: 2015,
      wins: 11
    },
    {
      year: 2016,
      wins: 6
    }
  ]
};

var max = Object.values(coach_wins) //get all the values of the object
  .reduce(function(largest, player){ //reduce the max for all player
    return player.reduce(function(largest, record){ //reduce the max for each player
      return (largest > record.wins ? largest : record.wins);
    }, largest);
  }, 0);

console.log(max);

票数 2
EN

Stack Overflow用户

发布于 2017-08-03 14:26:26

这个怎么样?

代码语言:javascript
复制
Object.values(coach_wins).reduce(
  (result, player) => Math.max(result, player.reduce(
    (wins, winsPerYear) => Math.max(wins, winsPerYear.wins)
  , 0))
, 0); // --> 11
票数 0
EN

Stack Overflow用户

发布于 2017-08-03 14:28:12

如果player的各个数组总是包含2,我想这很好,但是如果它可以改变,你可以这样做。一小段代码,但不会把你放在异常中

代码语言:javascript
复制
function getMaxWins(){
    var maxWins = 0;
    for (var curPlayer in coach_wins) {

        //checking whether is it contains records
        var playerRecords = coach_wins[curPlayer];

        if(playerRecords){
            playerRecords.forEach(function (playerRecord_) {
                if(maxWins < playerRecord_.wins) maxWins = playerRecord_.wins;
            });
        }
    }
    return maxWins;
}

console.log(getMaxWins());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45476093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档