JS - 我如何计算数组中的每个元素?

时间:2011-03-05 17:24:16

标签: javascript

我想知道每个数字中有多少元素在数组中,i。 Ë: [2,2,3,6,1,1001,2]应返回2 => 3,3 => 1,6 => 1,1 => 1,1001 => 1.但是当我设置counted[2] = 3counted[1001] = 1时我使用其他数组时,我创建了1002个长度数组(与PHP中的数组相反,我认为......)。我怎么能改进它? (当然我不知道输入数组中会有多少个元素) 谢谢你的建议。

4 个答案:

答案 0 :(得分:2)

使用Javascript对象作为哈希表,因此数字表示为该对象的属性:

var array = [2,2,3,6,1,1001,2];
var numbers = {};
for (var i = 0; i < array.length; i++) {
    var number = array[i];
    if (typeof(numbers[number]) === "undefined") {
        numbers[number] = 1;
    } else {
        numbers[number]++;
    }
}

答案 1 :(得分:1)

您可以使用对象。

以下是一个例子:

var src = [2,2,3,6,1,1001,2]
var results = {}

for (var i = 0, n = src.length; i < n; i++)
{
   results[src[i]] = results[src[i]] || 0
   results[src[i]] += 1
}

// Iterate over results or access by index to see frequency
for (var idx in results)
{
   console.log(idx + " ==> " + results[idx])
}

答案 2 :(得分:0)

尝试使用Object而不是Array。

Array假定如果在索引x处插入元素,则表示您需要至少x长度的数组。

答案 3 :(得分:0)

这是一个非常天真的答案,但您可以尝试使用hashmap。

var counted = { };