目的是要找出results里code相同的数值之和最大的一个,答案是574417bc79df540065d92df7,9+9=18 总和最大。
目前相同的code,poll叠加不知道怎么处理。请大神给个方法
以下obj是这里计算的一个中间产物。
var obj = [{"code":"57442329a3413100625f194f","poll":7},{"code":"5744242bc4c971005d5ff04e","poll":2},{"code":"574417bc79df540065d92df7","poll":18},{"code":"574a841d1532bc006068c6c9","poll":5},{"code":"574a97fe2b51e90056e423c0","poll":12},{"code":"574424e5df0eea0063adefc6","poll":1}] ;
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
}
]
}
]
var obj = [];
results.forEach(function(item) {
item.data.forEach(function(innerItem) {
if(isIn(innerItem.code, obj)){
//这里不知如何将相同的code的poll叠加
}else{
obj.push({
code: innerItem.code,
poll: innerItem.poll
})
}
})
})
console.log(JSON.stringify(obj));
//得出poll数值最大的 code
function size(arr){
var win = '';
var j = arr[0].poll;
for (var i=1;i<arr.length ;i++ ){
if(arr[i].poll>j){
j = arr[i].poll;
win = arr[i].code;
}
}
return win;
}
size(obj);
咦,这个我不是给你答过了么?:
修正:
好吧,那我们再来改一次试试:
当然我这般似乎不用
ES6
,真的不怎么简洁