2011-10-26 23 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); 
} 

这样(用括号表示法)要创建一个数组,你可能打算这样做。