首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object thatHolds Arrays JQuery

Object thatHolds Arrays JQuery
EN

Stack Overflow用户
提问于 2011-10-27 00:27:08
回答 3查看 27关注 0票数 0

如何创建一个将数组作为元素保存的对象。我试过了:

代码语言:javascript
复制
   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
    }
   ...

如何做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-27 00:29:57

最初添加一个数组,方法是在变量两边添加方括号:

代码语言:javascript
复制
...
if (typeof dMap[d.name] == "undefined") {
        dMap[d.name] = [p.name]; //<-- [ and ] added!
     } else {
        dMap[d.name].push(p.name);
 }

此外,要测试是否定义了变量/属性,请使用typeof variable == "undefined",因为undefined可以被任何内容覆盖,从而导致比较中断:

代码语言:javascript
复制
undefined = "broken";
var obj = {};
obj.notdeclared == undefined; //false
票数 1
EN

Stack Overflow用户

发布于 2011-10-27 00:30:26

dMap[d.name] = p.name;更改为dMap[d.name] = [p.name];,它应该可以工作。

它现在不起作用的原因是您将dMap[d.name]设置为(我假设)一个字符串,然后试图将另一个元素推入其中--这是没有意义的。Push是一个数组操作,所以您真正想要做的是将它设置为包含p.name的数组,然后可以向该数组追加额外的元素。

票数 0
EN

Stack Overflow用户

发布于 2011-10-27 00:30:39

也许你想写的是:

代码语言:javascript
复制
if (dMap[d.name] === undefined) {
    dMap[d.name] = [p.name]; // IMPORTANT CHANGE HERE
} else {
    dMap[d.name].push(p.name);
}

通过这种方式(使用括号表示法),您可以创建一个您可能想要做的数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7905745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档