javascript - js 数值统计,数值比较
本文介绍了javascript - js 数值统计,数值比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
目的是要找出results里code相同的数值之和最大的一个,答案是574417bc79df540065d92df7,9+9=18 总和最大。
以下obj是这里计算的一个中间产物,如果有其它方法可能没有这个产物,但数值比较用户要有依据,所以有中间产物留着就更好了。
var obj = [{"code":"57442329a3413100625f194f","poll": 7},{"code":"574417bc79df540065d92df7","poll": 18},{"code":"574a841d1532bc006068c6c9","poll": 5},{"code":"574a97fe2b51e90056e423c0","poll": 12},{"code": "574424e5df0eea0063adefc6","poll": 1},{"code": "5744242bc4c971005d5ff04e","poll": 2}];
var results = [
{
"uid": "5744242bc4c971005d5ff04e",
"data": [
{
"code": "57442329a3413100625f194f",
"poll": 7
},
{
"code": "5744242bc4c971005d5ff04e",
"poll": 2
}
]
},
{
"uid": "57442329a3413100625f194f",
"data": [
{
"code": "574417bc79df540065d92df7",
"poll": 9
}
]
},
{
"uid": "574417bc79df540065d92df7",
"data": [
{
"code": "574417bc79df540065d92df7",
"poll": 9
}
]
},
{
"uid": "574424e5df0eea0063adefc6",
"data": [
{
"code": "574a841d1532bc006068c6c9",
"poll": 3
},
{
"code": "574a97fe2b51e90056e423c0",
"poll": 6
}
]
},
{
"uid": "574a841d1532bc006068c6c9",
"data": [
{
"code": "574424e5df0eea0063adefc6",
"poll": 1
},
{
"code": "574a841d1532bc006068c6c9",
"poll": 2
},
{
"code": "574a97fe2b51e90056e423c0",
"poll": 5
}
]
},
{
"uid": "574a97fe2b51e90056e423c0",
"data": [
{
"code": "574a97fe2b51e90056e423c0",
"poll": 1
}
]
}
]
解决方案
修正:
鉴于你不喜欢ES6
的缘故,那我再稍微改改
var res = results
.reduce(function(p, item) {
p.push.apply(p, item.data);
return p;
}, [])
.reduce(function(p, item) {
if (!p[item.code]) {
p[item.code] = item.poll;
} else {
p[item.code] += item.poll;
}
return p;
}, {});
var max = Object
.keys(res)
.reduce(function(p, item) {
if (!p) {
return item;
}
if (res[p] < res[item]) {
return item;
}
return p;
}, '');
console.log(max); //你想要的结果: 574417bc79df540065d92df7
这篇关于javascript - js 数值统计,数值比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文