我在用什么
- Angular 5
- AngularFire5
- Firebase 和 Firestore
我要实现的目标
我正在尝试循环遍历包含对象的数组中的所有项目。如果对象中的某个值与另一个对象中的相同值相匹配,那么它会将另一个值相加。
示例:
开始于:
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”用法)是。
最佳答案
假设您的第一个集合是一个数组数组:
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);
关于javascript - 添加数组中对象的所有匹配值 (Javascript) (Angular),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176795/