Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在for in循环中创建新对象_Javascript_Oop_Object_Properties_For In Loop - Fatal编程技术网

Javascript 在for in循环中创建新对象

Javascript 在for in循环中创建新对象,javascript,oop,object,properties,for-in-loop,Javascript,Oop,Object,Properties,For In Loop,我想创建一个新对象,并为存储在某个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];

我想创建一个新对象,并为存储在某个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();
        }
当我输出对象属性时,一切都是未定义的


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

您从未实际设置
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();
}

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

这三条线的作用是什么:

     a = 0;
     a++;
     a = new supplement();
你似乎在做三件自相矛盾的事情。我的猜测是a意味着一个你没有展示的外部事物的索引

那是什么

     sup2

应该是,与您之前制作的副刊()有一些关系?

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

for (var i in json) {

        a = new supplement();

        for (var key in json[i]) {
            var Value = json[i][key];
            a[Key] = Value;
        }
        a.outputProperties();
    }
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()

您应该能够。我们可能需要看到更多的代码(例如,
sup2
来自哪里?);a++;a=新补编();在每次迭代中,您将a设置为0,然后设置为1,然后设置为对象。这是怎么回事?我想为每个循环迭代创建一个新对象。我想我可以增加一个变量值并使用它来创建新的对象名。这不管用,但还是成功了:theGoods[“obj”+i]=newobject();我在粘贴代码时犯了一些错误,然后为了便于理解而尝试进行概括。这表明空腹编码是不划算的!=)