我用的是
我想要实现的
我试图循环遍历数组中的所有项,数组中包含对象。如果对象中的某个值与另一个对象中的相同值匹配,那么它将一起添加另一个值。
示例:
从以下方面开始:
mapData = [{"countryCode":"US", "clicks": 5}, {"countryCode":"CAN", "clicks": 9}, {"countryCode":"US", "clicks": 6}]或
mapData = [["US", 5], ["CAN", 9], ["US", 6]]结尾:
mapDataResults = {
"US": {
"usage": 11,
"fillKey": "tens"
},
"CAN": {
"usage": 9,
"fillKey": "ones"
},
}我被困在那里
我不知道如何在数组中搜索和匹配不同的对象值。另外,我需要弄清楚如何重新组织数据是如何返回的,而不是需要以JSON格式表示的数组。最后,我想,如果我能得到其他部分的帮助,我可以自己解决这个问题,但是根据点击(或使用)的数量,有一个附加的附加值"fillKey“。
发布于 2018-01-09 21:29:16
假设您的第一个集合是数组数组:
let entries = [["US", 5], ["CAN", 9],["US", 6]];
function getMostSigDigitName(number) {
switch(Math.floor(number).toString().length) {
case 1: return 'ones';
case 2: return 'tens';
}
}
function consolidateAndEmit(a) {
let result = {};
for(let i=0;i<a.length;i++) {
let key = a[i][0];
let val = a[i][1];
if(result[key]) {//exists, so update
result[key].usage += val;
}
else {//does not exist, so add
result[key] = { usage: val};
}
result[key].fillKey = getMostSigDigitName(result[key].usage);
}
return result;
}
consolidateAndEmit(entries);发布于 2018-01-09 21:25:47
如果您可以使用房客,这可能是一个很好的方法:
mapData = [{"US", 5}, {"CAN", 9},{"US", 6}];然后是_.sumBy(mapData, 'US')或_.sumBy(mapData, "CAN")
您所需要做的就是将响应映射到对象。我已经给出了获得和的流程,如果mapData数组有包含"US“或"CAN”的额外数据,它就会被添加。
https://stackoverflow.com/questions/48176795
复制相似问题