使用JavaScript计算数组元素的出现次数

时间:2015-04-14 18:34:57

标签: javascript arrays

我有这个长度为129的JavaScript数组。

var fullnames = [Karri, Ismo, Grigori, Ahmed, Roope, Arto .....]

我想知道这些名字出现在数组中的次数,并将这些信息存储在这样的数组中:

var counter = [2, 5, 7, ..]

Karri在fullnames阵列中出现2次,Ismo发生了5次等等。有关如何做的任何想法?

3 个答案:

答案 0 :(得分:1)

这是我能想到的最好 - 最简单的方式:

var fullnames = ["Karri", "Ismo", "Grigori", "Ahmed", "Roope", "Arto"];
var counts = {};

for (var i = 0; i < fullnames.length; i++)
{
    if (!counts.hasOwnProperty(fullnames[i]))
    {
        counts[fullnames[i]] = 1;
    }
    else 
    {
        counts[fullnames[i]]++;
    }
}

Fiddle

使用数组存储计数并没有多大意义,所以我使用了一个对象。

答案 1 :(得分:0)

我假设fullnames是字符串数组。如果是这样,你可以这样做:

var occurences = { };
for (var i = 0; i < fullnames.length; i++) {
    if (typeof occurences[fullnames[i]] == "undefined") {
        occurences[fullnames[i]] = 1;
    } else {
        occurences[fullnames[i]]++;
    }
}

console.log(occurences); // Prints out something like: {"Karri": 2, "Ismo": 5, ...}

答案 2 :(得分:0)

var fullnames = ['Karri', 'Ismo', 'Grigori', 'Karri', 'Ismo', 'Grigori', 'Grigori', 'Karri', 'Ismo', 'Grigori', 'Grigori'];
var counts = [];
fullnames.forEach(function(_item) {
    if(typeof counts[_item] === 'undefined') counts[_item] = 1;
    else counts[_item]++;
});
var result = [];
for(i in counts) result.push(counts[i]);
console.log(result);

// outputs [3, 3, 5]