Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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使用reduce从数组创建具有计数的对象_Javascript_Reduce - Fatal编程技术网

JavaScript使用reduce从数组创建具有计数的对象

JavaScript使用reduce从数组创建具有计数的对象,javascript,reduce,Javascript,Reduce,我试图解决这个小问题,我需要使用reduce创建一个包含每个项目计数的对象 我想我理解了reduce是如何工作的,使用一个函数将多个值降到一个值,但我不知道这是如何工作的 有什么想法或建议吗?我真的很感激 // var people = ['josh', 'dan', 'sarah', 'joey', 'dan', 'josh', 'francis', 'dean']; // can reduce be used to get: // { // josh: 2, // dan:

我试图解决这个小问题,我需要使用
reduce
创建一个包含每个项目计数的对象

我想我理解了
reduce
是如何工作的,使用一个函数将多个值降到一个值,但我不知道这是如何工作的

有什么想法或建议吗?我真的很感激

// var people = ['josh', 'dan', 'sarah', 'joey', 'dan', 'josh', 'francis', 'dean'];

// can reduce be used to get: 

// { 
//   josh: 2,
//   dan: 2, 
//   sarah: 1,
//   joey: 1,
//   francis: 1,
//   dean: 1
// }

如您所见,需要一个对象作为数组项计数的结果集

为了得到结果,您可以使用默认值零来加一来计算实际值,同时使用给定名称作为属性进行计算

var people=['josh','dan','sarah','joey','dan','josh','francis','dean'],
计数=人。减少(功能(c,p){
c[p]=(c[p]| 0)+1;
返回c;
},Object.create(null));
控制台日志(计数)

工作

这是我正在学习的函数式编程课程。我觉得很好。
const groupedByName = people.reduce((obj, person) => {
  const count = obj[person] || 0
  return { ...obj, [person]: count + 1 }
}, {})