0

オブジェクトから新しい配列を作成しています。これを for ループで行います。

for (var key in data["record"])
    {
        if (data["record"].hasOwnProperty(key))
        {   

            if (data["record"][key]["acquisition.method"] != undefined ) {
                newObject[key] = [];

                newObject[key]["acquisition.method"] = data["record"][key]["acquisition.method"][0];

                if (data["record"][key]["production.date.end"] != undefined ) { 
                    newObject[key]["production.date"] = data["record"][key]["production.date.end"][0];


                }
            }
        }
    }

配列は、console.log で次のようになります。

0: Array[0]
1: Array[0]
2: Array[0]
3: Array[0]
4: Array[0]
5: Array[0]

私はそれを次のようにしたい:

record: Array[0]
record: Array[0]
record: Array[0]
record: Array[0]
record: Array[0]

どうすればいいですか?

JSONを追加

newObject = [
    "record": [
               "something": "value",
               "somethingelse": "value"
        ],
    "record": [
               "something": "value",
               "somethingelse": "value"
        ],
    "record": [
               "something": "value",
               "somethingelse": "value"
        ],
    "record": [
               "something": "value",
               "somethingelse": "value"
        ]
]

私が何とか作ることができるのは、次のようなものだけです:

   newObject = [
        "0": [
                   "something": "value",
                   "somethingelse": "value"
            ],
        "1": [
                   "something": "value",
                   "somethingelse": "value"
            ],
        "2": [
                   "something": "value",
                   "somethingelse": "value"
            ],
        "3": [
                   "something": "value",
                   "somethingelse": "value"
            ]
    ]

私はこのようなことを試しましたが、プッシュは配列専用であることを知っています:

var newObject = {};
    var records ={};
    records["record"] = {};



    for (var key in data["record"])
    {
        if (data["record"].hasOwnProperty(key))
        {   

            if (data["record"][key]["acquisition.method"] != undefined ) {

                records["record"]["acquisition.method"] = data["record"][key]["acquisition.method"][0];

                if (data["record"][key]["production.date.end"] != undefined ) { 

                    records["record"]["production.date"] = data["record"][key]["production.date.end"][0];
                    newObject.push(records);
                }
            }
        }
    }

私が今試したこと:

var records =[];

var newObject1 = {};
var newObject2= {};



for (var key in data["record"])
{
    if (data["record"].hasOwnProperty(key))
    {   

        if (data["record"][key]["acquisition.method"] != undefined ) {

            newObject2["acquisition.method"] = data["record"][key]["acquisition.method"][0];

            if (data["record"][key]["production.date.end"] != undefined ) { 

                newObject2["production.date"] = data["record"][key]["production.date.end"][0];
                newObject1["record"] = newObject2;
            }
        }
    }
    records.push(newObject1);
}
4

1 に答える 1

1

私があなたのコードを正しく理解しているなら(そして私は私が:)だと思いたいのですが)、あなたがやろうとしているのは、文字列(キー)で配列内の各レコードにアクセスできるようにすることです。これは、JSONを使用することで可能になります。JSONを使用する場合でも、インデックス(表示されている整数キー)によって配列内の要素にアクセスできるはずです。


更新 このように考えてください。単一のキーを使用して、配列内の多数のオブジェクトにアクセスしようとしています。問題は、定義上、キーが単一の値を参照していることです。したがって、複数のオブジェクトに同じキーを使用することはできません。ただし、キー「record」が参照する配列を作成することはできます。この配列は、これらの内部のキーと値のペアをすべて返します。

UPDATE 2 次のように考えてください。元の配列(最初に投稿したコードで作成された配列)を使用していると想像してください。ここで、その配列を。という名前の変数の値に設定するとしますvar rec。コンソールで変数の値を表示するrecと、元の投稿にリストした正確な出力( "0:Array [0]、1:Array [1] .....")が表示されます。一歩下がると、変数recがこれらすべての配列を参照している(つまり、それを含む配列である)ことがわかります(本来あるべき姿です)。さて、これがあなたがすることです:あなたは新しいオブジェクトを作成しobj1、それに名前の付いたプロパティを与え、recordそのプロパティの値をあなたの変数に設定しますrecobj1これは、を介してデータにアクセスできるオブジェクト、を持っていることを意味しますobj["record"]

これは概念的な解決策であり、完全な解決策ではないことに注意してください。


ご不明な点がございましたら、お気軽にお問い合わせください。幸運を!:)

于 2013-01-29T19:16:19.387 に答える