我有一个这样的数组,我想计算
每个元素的出现频率
var arr = [1, 5, 7, -1];
function countArray (arr){
var map = [];
for (var i =0; i < arr.length ; i++){
map[arr[i]]++;
}
console.log(map);
}
console.log
打印[1: NaN, 5: NaN, 7: NaN, -1: NaN]
我希望它打印 [1: 1, 5: 1, 7: 1, -1: 1]
我不明白为什么我会得到 NaN
最佳答案
好吧,如果这是第一次出现,那么你会尝试增加一个未定义的。所以首先检查它是否未定义,然后分配 0,或递增它。
并且您应该使用对象,而不是数组。该对象有一个 key
和 value
而 Array
是一组有序的元素,通过它们的数字索引访问。
我编辑它是为了说明您可以使用Array
对象。如果索引的值大于数组中的最大索引,那么它将调整大小。但是,我认为使用对象更好,因为将来如果您使用其他类型的 key (不是数字),那么代码将不需要任何更改。
var arr = [1, 5, 7, -1];
function countArray (arr) {
var map = {};
for ( var i =0; i < arr.length ; i++ ){
map[ arr[i] ] = typeof map[ arr[i] ] === 'undefined' ? 1 : ++map[ arr[i] ];
}
console.log(map);
}
关于javascript - 统计javascript中数组中元素的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926516/