从Angular中的对象获取具有最大值的元素
找不到任何关于此的信息。从Angular中的对象获取具有最大值的元素
我有这样的控制器:
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
。做这个的最好方式是什么?
你可以用一对夫妇的本地方法做到这一点:
$scope.max = Math.max.apply(null, Object.keys(data.lang).map(function(key) {
return data.lang[key];
}));
添加到控制器,但我想我错过了一些东西,因为它不起作用:'app.controller('StatsCtrl',函数($ scope,$ http){ $ http.get('stats。 (函数(数据){scope.stats = data; }); $ scope.max = Math.max.apply(null,Object.keys(data.lang).map(function( key){ return data.lang [key]; })); });' – neptune
哎呀,它现在正在工作。谢谢。 'app.controller('StatsCtrl',函数($ scope,$ http)$ http.get('stats.json')。success(函数(数据){ $ scope.stats = data; $ scope。 max)= Math.max.apply(null,Object.keys(data.lang).map(function(key){data_language};} – neptune
我会建议underscore.js _.max
使用:
_.max(list, [iteratee], [context])
返回列表中的最大值。如果提供了迭代函数,它将用于每个值以生成排序值的标准。如果列表为空,则返回Infinity,因此可能需要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};
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
}
}
}
你想金额(数量)分配给最大或关键(如“en”,“und”)最大? –
@ user2393267在这种情况下将是28的值(数字)。 – neptune