使用javascript中的map计算字符串值,返回NaN

时间:2014-10-28 16:07:08

标签: javascript map

我正在尝试使用地图来计算数组中的重复字符串数, 我的代码:

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

我该怎么办? 提前谢谢。

2 个答案:

答案 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]]) {