我正在做一个编程练习,希望我计算一个字符串中所有出现的字符,例如"狗去了另一只狗"。
对于上面的示例,我必须返回一个带有计数的哈希值:{the:2,dog:2,go:1,to:1,other:1}
但我的问题是如何处理保留字的计数,我正在接受NaN。
所以这个字符串{"狗去了另一只狗toString"},为我返回:
{the:2,dog:2,go:1,to:1,other:1,toString:NaN}
我怎样才能让这个给我真正的数量,而不是NaN。
答案 0 :(得分:5)
JavaScript实际上没有哈希值。因此,如果您要创建这样的哈希:hash = {}
那么您实际上是在其原型链中创建一个已存在属性的对象。这包括toString
功能。要避免这种情况,请使用Object.create(null)
创建一个对象来存储您的字数。
以下是一个例子:
var words = function(string) {
var words_array = string.split(" ");
var word_count_hash = Object.create(null);
words_array.map( function (word){
if (word in word_count_hash)
word_count_hash[word] ++;
else word_count_hash[word] = 1;
});
return word_count_hash;
}