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

sur*_*h.g 4 javascript

可能重复:
如何计算Javascript数组中的匹配值

我有数组元素,

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

我想像下面的方式计算数组元素,

回答:

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

注意:每个值计数应仅打印一次.

I H*_*azy 19

var counts = {};

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


console.log(counts);
Run Code Online (Sandbox Code Playgroud)

这假设toString可以接受数组中项目的表示.例如,它将1看作是相同的"1".

鉴于您的示例数组,这不会是一个问题.


Guf*_*ffa 10

您可以对元素进行排序并循环遍历它们:

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');
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/Guffa/aQsuP/


xda*_*azz 5

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);?
Run Code Online (Sandbox Code Playgroud)

现场演示。

注意:减少旧浏览器需要垫片。