我正在尝试使用地图来计算数组中的重复字符串数, 我的代码:
var map = {};
var myarray = ["John", "John", "John", "Doe", "Doe", "Smith",
"John", "Doe", "Joe"];
for (var a = 0; a < myarray.length; a++) {
if (map[myarray[a]] !== null) {
map[myarray[a]] += 1;
} else {
map[myarray[a]] = 1;
}
}
但当我console.log(map);
时,它会返回
Object {John: NaN, Doe: NaN, Smith: NaN, Joe: NaN}
为什么是NaN? 我希望得到如下结果:
John :4, Doe: 3, Smith: 1, Joe: 1
我该怎么办? 提前谢谢。
答案 0 :(得分:1)
map[myarray[a]] !==null
时, undefined
将返回true,这是第一次遇到新值时的情况。
应该是:
map[myarray[a]] !== undefined
或
map[myarray[a]] != null
// undefined == null
答案 1 :(得分:0)
在这种情况下,您不应与null
严格===
进行比较,因为undefined
不等同于null
。试试这个:
if (map[myarray[a]] != null) {
或简单地说:
if (map[myarray[a]]) {