Javascript 如何计算对象中数组的和
我有一个这样的变量Javascript 如何计算对象中数组的和,javascript,Javascript,我有一个这样的变量 const data={ 代码:1,, 项目:[ {昵称:1,姓名:[ {id:“A”}, {id:“B”} ] }, { 昵称:2,姓名:[ {id:“A”}, {id:“C”} ] } ] } 在这之后,我想显示您可以执行的字符数:A:2、B:1、C:1如下步骤: 在数组data.items上使用flatMap() 在flatMap()内部,使用map()将所有对象转换为其id并从flatMap()返回。这样您就可以排列[“A”、“B”、“A”、“C”] 然后使用
const data={
代码:1,,
项目:[
{昵称:1,姓名:[
{id:“A”},
{id:“B”}
]
},
{
昵称:2,姓名:[
{id:“A”},
{id:“C”}
]
}
]
}
在这之后,我想显示您可以执行的字符数:A:2、B:1、C:1如下步骤:
- 在数组
data.items上使用
flatMap()
- 在
内部,使用flatMap()
将所有对象转换为其map()
并从id
返回。这样您就可以排列flatMap()
[“A”、“B”、“A”、“C”]
- 然后使用
获得一个包含所有字母计数的对象reduce()
const data={code:1,项:[{昵称:1,名称:[{id:“A”},{id:“B”}]},{昵称:2,名称:[{id:“A”},{id:“C”}]}]}
const res=data.items.flatMap(x=>
x、 name.map(a=>a.id)
).reduce((ac,a)=>(ac[a]=ac[a]+1 | | 1,ac),{});
log(res)
您可以在循环中迭代name并获取id以分配计数
const
数据={代码:1,项:[{昵称:1,名称:[{id:“A”},{id:“B”}]},{昵称:2,名称:[{id:“A”},{id:“C”}]},
结果=data.items.reduce(
(r,{name})=>(name.forEach(({id})=>r[id]=(r[id]| | 0)+1),r),
{}
);
控制台日志(结果)代码>
const数据={
代码:1,,
项目:[
{
绰号:1,,
姓名:[
{id:“A”},
{id:“B”}
]
},
{
外号:2,,
姓名:[
{id:“A”},
{id:“C”}
]
}
]
};
const res=data.items.reduce((acc,next)=>{
next.name.forEach({id})=>{
acc[id]=acc[id]+1 | 1;
});
返回acc;
}, {});
控制台日志(res)因此,我想使用reduce函数….map()
和.flat()
来创建数组['A','B','A','C']
。然后使用。.hasOwnProperty()
或其他方法将其还原为计数对象。StackOverflow不是免费的编码服务。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅,并以:)第二点[“A”、“B”、“A”、“B”]
中数组中的小打字错误应[“A”、“B”、“A”、“C”]
为例,以其他清晰的答案解释每个步骤的操作。是否有任何理由使用平面图和减少而不是单个减少
?当然,除了简化之外。@briosheje不,没有具体的原因。