如何創建一個將數組保存爲元素的對象。我試過:保存數組的對象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
}
...
如何做到這一點?
如何創建一個將數組保存爲元素的對象。我試過:保存數組的對象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
}
...
如何做到這一點?
最初添加陣列,通過在你的變量加入方括號:
...
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
變化dMap[d.name] = p.name;
到dMap[d.name] = [p.name];
,它應該工作。
它現在不起作用的原因是,你將dMap[d.name]
設置爲(我假設)一個字符串,然後試圖將另一個元素推到它上面 - 這是沒有意義的。 Push是一個數組操作,所以你真正想做的就是將它設置爲包含p.name
的數組,然後你可以添加其他元素。
也許你的意思是寫:
if (dMap[d.name] === undefined) {
dMap[d.name] = [p.name]; // IMPORTANT CHANGE HERE
} else {
dMap[d.name].push(p.name);
}
這樣(用括號表示法)要創建一個數組,你可能打算這樣做。