计算每个数组项的出现并将结果作为对象返回

问题描述

任何本机替代品:

const colorArray = ['red','green','blue','purple','red','black'];

收件人:

Object {
  "red": 3,"green": 2,"blue": 1,"purple": 1,"black": 1
}

在javascript中?

const colorArray = ['red','black'];

function categorizeUnique(array) {
  const distinct_objects = {};
  const length = array.length;
  for(let i=0; i<length; i++) {
    const distinct_objects_keys = Object.keys(distinct_objects);
    const possible_index = distinct_objects_keys.indexOf(array[i]);
    if(possible_index === -1) {
      distinct_objects[array[i]] = 1;
    } else {
      distinct_objects[distinct_objects_keys[possible_index]]++;
    }
  }
  return distinct_objects;
}

const result = categorizeUnique(colorArray);
console.log(result);
那是我尝试实现的目标,但是我想要一个内置的本机解决方案。

感谢您的宝贵努力和时间!

解决方法

Array.prototype.reduce()似乎与您要寻找的内容非常接近:

const src = ['red','green','blue','purple','red','black'],result = src.reduce((acc,color) => (acc[color]=(acc[color]||0)+1,acc),{})
      
console.log(result)
.as-console-wrapper{min-height:100%;}

,

使用.reduce

const colorArray = ['red','black'];

let colorCount = colorArray.reduce((a,c) => ({ ...a,[c]: a[c] + 1 || 1}),{} );
      
console.log(colorCount);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...