我的意见如下
[
{
"metadata": { "id": 1071, "name": "First" },
"languages": [
{ "name": "Alpha", "details": [ { "city": "usa", "count": 33 } ] },
{ "name": "Beta", "details": [ { "city": "japan", "count": 3 } ] },
]
},
{
"metadata": { "id": 1068, "name": "Second" },
"languages": [
{ "name": "Alpha", "details": [ { "city": "japan", "count": 10 }, { "city": "usa", "count": 20 } ] },
{ "name": "Beta", "details": [ { "city": "japan", "count": 15 }, { "city": "usa", "count": 25 } ] },
]
},
]
这是我必须按语言Alpha
进行过滤的场景.因此,我必须将第一个对象和过滤器语言进行Alpha
次判断,然后将usa
和japan
计数放入新数组中.类似地,循环第二个对象并提取该计数.
最后,我应该得到新数组中的计数序列
output = { japan: [0, 10], usa: [33, 20] } //for filter by Alpha
output = { japan: [3, 15], usa: [0, 25] } //for filter by Beta
正如您所看到的那样,如果details
数组中没有japan
或usa
计数,我们将为此按0.
我try 了以下操作,但无法使用reduce达到预期的结果.我在这里错过了什么吗?
let output = input.reduce(
(result, { languages }) => {
result.japan.push(languages.details.count || 0);
result.usa.push(languages.details.count || 0);
return result;
},
{ japan: [], usa: [] }
);