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

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

Javascript 计算每个数组项的出现次数,并将结果作为对象返回,javascript,arrays,duplicates,categorical-data,categorization,Javascript,Arrays,Duplicates,Categorical Data,Categorization,从以下位置出发的任何本地替代方案: const colorArray = ['red', 'green', 'green', 'blue', 'purple', 'red', 'red', 'black']; 致: 在javascript中 const colorArray=[“红色”、“绿色”、“绿色”、“蓝色”、“紫色”、“红色”、“红色”、“黑色”]; 函数categorizeUnique(数组){ const distinct_objects={}; 常量长度=array.lengt

从以下位置出发的任何本地替代方案:

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

在javascript中

const colorArray=[“红色”、“绿色”、“绿色”、“蓝色”、“紫色”、“红色”、“红色”、“黑色”];
函数categorizeUnique(数组){
const distinct_objects={};
常量长度=array.length;
对于(设i=0;i似乎非常接近您要查找的内容:

const src=[“红色”、“绿色”、“绿色”、“蓝色”、“紫色”、“红色”、“红色”、“黑色”],
结果=src.reduce((acc,color)=>(acc[color]=(acc[color]| | 0)+1,acc),{})
console.log(结果)
。作为控制台包装{最小高度:100%;}
使用:

const colorArray=[“红色”、“绿色”、“绿色”、“蓝色”、“紫色”、“红色”、“红色”、“黑色”];
让colorCount=colorArray.reduce((a,c)=>({…a[c]:a[c]+1 | | 1}),{});

console.log(colorCount);
这种方法的一个小问题是,当输入数组足够大时,它会在每次迭代时重新创建不必要的累加器对象,而代码会被累加到该对象上。我不太理解(acc,color)=>(acc[color]=(acc[color]|0)+1,acc)有效。顺便说一句,我对reduce、累计参数和当前参数有一些经验。请解释。@Jhon:我相信,它的和让你感到困惑。@Jhon:简而言之,
acc[color]|0
被评估为
acc[color]
0
,如果前者是
未定义的
(第一次穿过每个特定的颜色)
(acc[color]=(acc[color]||0)+1,acc)
acc[color]=acc[color]|0+1基本相同;返回acc
小心使用
逗号运算符
Object {
  "red": 3,
  "green": 2,
  "blue": 1,
  "purple": 1,
  "black": 1
}