从Angular中的对象获取具有最大值的元素

时间:2015-11-06 10:59:55

标签: json angularjs

无法找到任何相关信息。

我有这个控制器:

app.controller('StatsCtrl', function ($scope, $http) {
 $http.get('stats.json').success(function(data) {
    $scope.stats = data;
 });
});

stats.json有:

{"lang":{"en":28,"und":1,"ja":9,"es":14,"ru":1,"in":1,"ko":1,"th":1,"ar":1}}

我需要的是将lang对象的最大值分配给控制器中的$scope.max。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:2)

https://jsfiddle.net/kaiser07/6h317Lvv/

  var jsonText = '{"lang":{"en":28,"und":1,"ja":9,"es":14,"ru":1,"in":1,"ko":1,"th":1,"ar":1}}';
    var data = JSON.parse(jsonText).lang
    var maxProp = null
    var maxValue = -1
    for (var prop in data) {
      if (data.hasOwnProperty(prop)) {
        var value = data[prop]
        if (value > maxValue) {
          maxProp = prop
          maxValue = value
        }
      }
    }

答案 1 :(得分:1)

我建议使用underscore.js _.max

_.max(list, [iteratee], [context])

返回列表中的最大值。如果提供了iteratee函数,则将对每个值使用它以生成对值进行排序的标准。如果list为空,则返回无效,因此可能需要isEmpty防护。

var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
_.max(stooges, function(stooge){ return stooge.age; });
=> {name: 'curly', age: 60};

link

答案 2 :(得分:1)

您可以使用几种原生方法来实现:

div