2014-10-28 18 views
2

我試圖使用地圖中的數組數重複串號, 我的代碼:計數在JavaScript中使用地圖的字符串值,返回NaN的

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

在這種情況下,您應該嚴格禁止null嚴格===,因爲undefined不等於null。試試這個:

if (map[myarray[a]] != null) { 

或者乾脆:當字段爲undefined,這是當第一次遇到一個新值的情況下

if (map[myarray[a]]) { 
+0

如果(圖[myArray的[A])或地圖[myArray的[A]] ==未定義的作品,非常感謝!:) – 2014-10-28 17:53:27

+0

@CaseyCao不客氣。請記住接受幫助你的答案。 – dfsq 2014-10-28 17:57:30

1

map[myarray[a]] !==null將返回true。

應該是:

map[myarray[a]] !== undefined 

map[myarray[a]] != null 
// undefined == null