javascript - 词频统计,修复标准属性的一个bug

标签 javascript arrays

我正在尝试构建一个 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]);

结果:

enter image description here

可以看到在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 ) 问题

Demonstration

关于javascript - 词频统计,修复标准属性的一个bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21626177/

相关文章:

ios - 字符串上的 XCTAssertEqual 总是失败

java - 如何检查某种整数的稳定性?

javascript - 使用本地 css 和 js 在 WebView 中加载 HTML

javascript - 从 input[type=file] javascript 获取完整路径

javascript - 在 Angular 中,当我不知道扩展名时如何加载图像?

javascript - 如何使用 jquery 替换节中最后一个 <a> 标记

c - 我有一个外部 COBOL-IT 函数,我想从我的 C 程序中调用。获取错误 "ERRORC2065: ' productid' : undeclared identifier

c++ - C++ 指针指向数组 : invalid type argument of unary * (have 'int), 的错误需要左值作为赋值的左操作数

arrays - 从模型 Swift 3 中的数组调用项目

php - 对每个检查的元素执行函数