2011-10-26 24 views
0

如何創建一個將數組保存爲元素的對象。我試過:保存數組的對象JQuery

var dMap = new Object(); 
    ... 
    if (dMap[d.name] === undefined) { 
      dMap[d.name] = p.name; 
     } else { 
      dMap[d.name].push(p.name);// It gives error here 
    } 
    ... 

如何做到這一點?

回答

1

最初添加陣列,通過在你的變量加入方括號:

... 
if (typeof dMap[d.name] == "undefined") { 
     dMap[d.name] = [p.name]; //<-- [ and ] added! 
    } else { 
     dMap[d.name].push(p.name); 
} 

此外,爲了測試一個變量/屬性是否被定義或沒有,使用typeof variable == "undefined",因爲undefined可以被任何東西所覆蓋,造成比較打破:

undefined = "broken"; 
var obj = {}; 
obj.notdeclared == undefined; //false 
0

變化dMap[d.name] = p.name;dMap[d.name] = [p.name];,它應該工作。

它現在不起作用的原因是,你將dMap[d.name]設置爲(我假設)一個字符串,然後試圖將另一個元素推到它上面 - 這是沒有意義的。 Push是一個數組操作,所以你真正想做的就是將它設置爲包含p.name的數組,然後你可以添加其他元素。

0

也許你的意思是寫:

if (dMap[d.name] === undefined) { 
    dMap[d.name] = [p.name]; // IMPORTANT CHANGE HERE 
} else { 
    dMap[d.name].push(p.name); 
} 

這樣(用括號表示法)要創建一個數組,你可能打算這樣做。