如何创建一个将数组作为元素保存的对象。我试过了:
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
}
...如何做到这一点?
发布于 2011-10-27 00:29:57
最初添加一个数组,方法是在变量两边添加方括号:
...
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发布于 2011-10-27 00:30:26
将dMap[d.name] = p.name;更改为dMap[d.name] = [p.name];,它应该可以工作。
它现在不起作用的原因是您将dMap[d.name]设置为(我假设)一个字符串,然后试图将另一个元素推入其中--这是没有意义的。Push是一个数组操作,所以您真正想要做的是将它设置为包含p.name的数组,然后可以向该数组追加额外的元素。
发布于 2011-10-27 00:30:39
也许你想写的是:
if (dMap[d.name] === undefined) {
dMap[d.name] = [p.name]; // IMPORTANT CHANGE HERE
} else {
dMap[d.name].push(p.name);
}通过这种方式(使用括号表示法),您可以创建一个您可能想要做的数组。
https://stackoverflow.com/questions/7905745
复制相似问题