我正在尝试创建一个返回数组频率分布的函数。此函数应返回一个对象,其中键是唯一元素,值是这些元素出现的频率。
我的代码如下:
function getFrequencies(arr) {
let obj = {};
for (let i=0; i<arr.length; i++){
let element = arr[i];
console.log(element)
// check if key exists in object already
// if it exists, add 1 to the value
if (obj[element] !== undefined){
obj[element] += 1;
}
// if it does not exist, add 1 to setup future elements
else {
obj[element] === 1;
}
}
return obj
}
getFrequencies(["A", "B", "A", "A", "A"])
我的代码返回:{} 当它应该返回时:
{ A: 4, B: 1 }
我做错了什么?
最佳答案
obj[element] === 1;
这是比较运算符,不是赋值。
你想要 obj[element] = 1;
你可以在 ES6+ 中更容易地做到这一点,这是值得的:
arr.reduce((acc, item) => {
acc[item] = (acc[item] || 0) + 1
return acc
}, {})
关于JavaScript:创建一个返回数组频率分布的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56827018/