Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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_Ecmascript 6 - Fatal编程技术网

Javascript 减少对象数组&;对其数组的值进行计数

Javascript 减少对象数组&;对其数组的值进行计数,javascript,ecmascript-6,Javascript,Ecmascript 6,假设我有一个对象数组: const data = [ {a: 'happy', b: 'robin', c: ['blue','green']}, {a: 'tired', b: 'panther', c: ['green','black','orange','blue']}, {a: 'sad', b: 'goldfish', c: ['green','red']} ]; 如何循环主数据数组并统计颜色值出现的次数 我是否先从.map开始,然后在map函数中减少 我期待的结果是

假设我有一个对象数组:

const data = [
  {a: 'happy', b: 'robin', c: ['blue','green']}, 
  {a: 'tired', b: 'panther', c: ['green','black','orange','blue']}, 
  {a: 'sad', b: 'goldfish', c: ['green','red']}
];
如何循环主数据数组并统计颜色值出现的次数

我是否先从
.map
开始,然后在map函数中减少

我期待的结果是:

{blue: 2, green: 3, black: 1, orange: 1, red: 1}

您可以使用
Array.prototype.reduce
:在
数据的每次迭代中,您只需迭代数组中的所有颜色,并根据累加器分别检查它们(如果存在):

  • 如果存在,则将计数增加1
  • 否则,将起始值设置为1
const数据=[
{a:'快乐',b:'罗宾',c:[蓝色','绿色']},
{a:'累了',b:'黑豹',c:[绿色','黑色','橙色','蓝色'],
{a:'悲伤',b:'金鱼',c:['绿色','红色']}
];
常量计数=数据减少((acc,cur)=>{
常数颜色=电流c;
颜色。forEach(颜色=>{
acc[颜色]=acc[颜色]?acc[颜色]+1:1;
});
返回acc;
}, {});
控制台日志(计数)“我是否先从.map开始,然后在map函数中使用reduce?”-听起来不错。试试看。