4

我想创建一个新对象并为存储在某个 json 中的每个数组分配一些属性。我有这个主要工作除了......

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();
        }

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

如果我在循环之外创建一个对象并将属性分配给它,它似乎工作正常,除了第一组属性被以下内容覆盖。不知道为什么我不能在循环内动态创建对象和分配属性。

4

4 回答 4

3

你从来没有真正设置过a. 您只需设置sup2. 在旁注中,您还有其他不必要的东西,例如var Key = key;试试这个:

for (var i in json) {
    var a = new supplement();
    for (var key in json[i]) {
        a[key] = json[i][key];
    }
    a.outputProperties();
}
于 2010-09-14T17:20:19.543 回答
1

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

这三行是做什么的:

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

你似乎用那里做了三件相互矛盾的事情。我的猜测是,a 意味着你没有显示的一些外部事物的索引。

那么什么是

     sup2

应该是,与您之前制作的supplement() 有某种关系?

于 2010-09-14T17:21:55.830 回答
1

戴夫史密斯的回答非常接近我的需要,但它没有在循环中创建新对象。这是提供所需结果的更新代码:

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();

于 2010-09-14T21:10:42.920 回答
0
for (var i in json) {

        a = new supplement();

        for (var key in json[i]) {
            var Value = json[i][key];
            a[Key] = Value;
        }
        a.outputProperties();
    }
于 2010-09-14T17:44:38.843 回答