javascript - 统计javascript中数组中元素的出现次数

标签 javascript

我有一个这样的数组,我想计算每个元素的出现频率

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,或递增它。

并且您应该使用对象,而不是数组。该对象有一个 keyvalueArray 是一组有序的元素,通过它们的数字索引访问。

我编辑它是为了说明您可以使用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/

相关文章:

javascript - 将一个类附加到给定数据的 javascript 日历 (clndr.js)

javascript - Ajax - jQuery 和 Ajax 错误/不工作

javascript - 在 Typescript 中,Object.prototype 函数可以返回 Sub 类型实例吗?

javascript - getJSON 失败,JSON 验证

javascript - Node.js child_process TypeError : Cannot read property '_writableState' of undefined

javascript - 访问对象字面量两项数组的外部名称

javascript - 如何通过单击文本内容区域来检测 HTML 元素是否有文本?

javascript - React Native DRY Javascript

javascript - 自定义绑定(bind)后运行默认绑定(bind)

javascript - 光标出现在搜索框上点击