如何在javascript中按每个元素计算数组元素

如何在javascript中按每个元素计算数组元素,javascript,Javascript,可能重复: 我有一个数组,元素为 数组元素=[“2”、“1”、“2”、“2”、“3”、“4”、“3”、“3”、“3”、“3”、“5”] 我想按如下方式计算数组元素 答复: 2次-->3次 1来-->1次 3次-->4次 4次-->1次 5次-->1次 注意:每个值计数只能打印一次。var counts={}; var counts = {}; for (var i = 0; i < array.length; i++) counts[array[i]] = (counts[ar

可能重复:

我有一个数组,元素为

数组元素=[“2”、“1”、“2”、“2”、“3”、“4”、“3”、“3”、“3”、“3”、“5”]

我想按如下方式计算数组元素

答复:

2次-->3次
1来-->1次
3次-->4次
4次-->1次
5次-->1次

注意:每个值计数只能打印一次。
var counts={};
var counts = {};

for (var i = 0; i < array.length; i++)
    counts[array[i]] = (counts[array[i]] + 1) || 1;


console.log(counts);
对于(var i=0;i
这假设可以接受数组中项目的
toString
表示。例如,它将看到
1
“1”
相同


对于示例数组,这不是问题。

您可以对元素进行排序并在其中循环:

array_elements = ["2", "1", "2", "2", "3", "4", "3", "3", "3", "5"];

array_elements.sort();

var current = null;
var cnt = 0;
for (var i = 0; i < array_elements.length; i++) {
    if (array_elements[i] != current) {
        if (cnt > 0) {
            document.write(current + ' comes --> ' + cnt + ' times<br>');
        }
        current = array_elements[i];
        cnt = 1;
    } else {
        cnt++;
    }
}
if (cnt > 0) {
    document.write(current + ' comes --> ' + cnt + ' times');
}
array_elements=[“2”、“1”、“2”、“2”、“3”、“4”、“3”、“3”、“3”、“5”];
数组_元素。排序();
无功电流=零;
var-cnt=0;
对于(var i=0;i0){
document.write(当前+'来-->'+cnt+'次
'); } 电流=阵列_元素[i]; cnt=1; }否则{ cnt++; } } 如果(cnt>0){ document.write(current+'comes-->'+cnt+'times'); }
演示:


注意:对于旧浏览器,reduce需要一个垫片。

您想用Ruby或JavaScipt计算它们吗?如果是后者,为什么要使用ruby标记?您知道如何编写for循环和使用对象吗。似乎是基本的家庭作业101类问题。重复问题:对于喜欢花哨词汇的人来说,这是一个
var arr = ["2","1","2","2","3","4","3","3","3","5"];
var k = {};

//push into hashtable
for(i in arr){
 k[arr[i]]=(k[arr[i]]||0)+1; //increments count if element already exists
}

//result
for(var j in k) {
 console.log(j+" comes -> "+k[j]+" times");
}
var array_elements = ["2","1","2","2","3","4","3","3","3","5"];

var result = array_elements.reduce(function(p, c){
    if (c in p) {
       p[c]++;
    } else {
       p[c]=1;
    }
    return p;
}, {});

​console.log(result);​