如何创建一个将数组保存为元素的对象。我试过:保存数组的对象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);
}
这样(用括号表示法)要创建一个数组,你可能打算这样做。