问题描述
任何本机替代品:
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);