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