我正在尝试构建一个 javascript 函数来计算输入数组中每个单词的出现次数。
示例:
输入
a=["a","booster","booster","constructor","adam","adam","adam","adam"]
输出:
"a":1
"booster":2
"constructor":1
"adam":4
输出应该类似于字典。
我是 javascript 的新手,我尝试使用字典。但是对象有一个名为“constructor”的属性,所以 cnt["constructor"] 似乎不起作用。
这是我的代码和结果:
var cnt={};
console.log("constructor");
for(var i=0;i<a.length;++i)
{
if(! (a[i] in cnt))
cnt[a[i]]=0;
else
cnt[a[i]]+=1;
}
for(var item in cnt)
console.log(item+":"+cnt[item]);
结果:
可以看到在cnt的构造函数中添加了1作为字符串。
最佳答案
function count(arr){
return arr.reduce(function(m,e){
m[e] = (+m[e]||0)+1; return m
},{});
}
背后的想法是
- 使用
reduce
实现优雅 - 使用
+m[e]
将m[e]
转换为数字以避免constructor
(或toString
) 问题
关于javascript - 词频统计,修复标准属性的一个bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21626177/