Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算对象中数组的和_Javascript - Fatal编程技术网

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).map()
.flat()
来创建数组
['A','B','A','C']
。然后使用。
.hasOwnProperty()
或其他方法将其还原为计数对象。StackOverflow不是免费的编码服务。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅,并以:)第二点
[“A”、“B”、“A”、“B”]
中数组中的小打字错误应
[“A”、“B”、“A”、“C”]
为例,以其他清晰的答案解释每个步骤的操作。是否有任何理由使用
平面图
减少
而不是单个
减少
?当然,除了简化之外。@briosheje不,没有具体的原因。