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

Dave Smith の答えは、私が必要としていたものにかなり近かったのですが、ループ内に新しいオブジェクトを作成しませんでした。望ましい結果を提供する私の更新されたコードは次のとおりです。

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 に答える
1

あなたが貼り付けたコードは、まとまっていないように見えるという意味で、私には正しく見えません。

これらの3行は何をしますか:

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

あなたはそこに 3 つの相反することをしているようです。私の推測では、 a は、表示されていない外部のものへのインデックスであることを意図しています。

じゃあ何だ

     sup2

はずですが、先ほど作成したsupplement()と何らかの関係があるのでしょうか?

于 2010-09-14T17:21:55.830 に答える
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 に答える