首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for-in-loop中创建新对象

在for-in-loop中创建新对象
EN

Stack Overflow用户
提问于 2010-09-15 01:13:23
回答 4查看 6.5K关注 0票数 4

我想创建一个新对象,并为存储在某个json中的每个数组分配一些属性。我大部分时间都在工作除了..。

代码语言:javascript
复制
for (var i in json) {

            a = 0;
            a++;
            a = new Object();

            for (var key in json[i]) {
                var Key = key;
                var Value = json[i][key];
                a[Key] = Value;
            }
            a.outputProperties();
        }

当我输出对象属性时,一切都是未定义的。

如果我在循环之外创建一个对象并将属性分配给它,它似乎工作正常,只是第一组属性被下面的代码覆盖了。不确定为什么我不能在循环中动态地创建对象和分配属性。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-15 05:10:43

Dave Smith的回答非常接近我所需要的,但是它没有在循环中创建新的对象。下面是我更新后的代码,它们提供了所需的结果:

代码语言:javascript
复制
for (var i in json) {
            theGoods["obj"+i] = new Object();
            for (var key in json[i]) {
                theGoods["obj"+i][key] = json[i][key];
            }
            theGoods["obj"+i].outputProperties();
        }

现在,每个新对象都存储在一个数组theGoods[]中;我现在可以通过编写如下代码来引用该对象:theGoods["obj2"].someMethod();

票数 1
EN

Stack Overflow用户

发布于 2010-09-15 01:20:20

实际上,您从未设置过a的任何属性。您只需设置sup2的属性。顺便说一句,你还有其他不必要的东西,比如var Key = key;,试试这个:

代码语言:javascript
复制
for (var i in json) {
    var a = new supplement();
    for (var key in json[i]) {
        a[key] = json[i][key];
    }
    a.outputProperties();
}
票数 3
EN

Stack Overflow用户

发布于 2010-09-15 01:21:56

在我看来,你粘贴的代码看起来并不正确,从某种意义上说,它似乎没有结合在一起。

这三行代码是做什么的:

代码语言:javascript
复制
     a = 0;
     a++;
     a = new supplement();

你似乎用一个there做了三件矛盾的事情。我的猜测是,a应该是一个索引,指向一些你没有显示的外部事物。

那什么是

代码语言:javascript
复制
     sup2

应该是,和你之前做的补充物()有什么关系?

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

https://stackoverflow.com/questions/3711247

复制
相关文章

相似问题

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