0

次のような一連のオブジェクトを繰り返し処理しています。

var tests = [{ date: 1379082017487,
  summary:
    {'Item A': 2069,
     'Item B': 8987,
     'Item C': 1890
    }},
{date: 1379082015968,
  summary:
    {'Item A': 1824,
     'Item B': 6758,
     'Item C': 3857
    }}];

データを同じキーを持つ単一のオブジェクトに結合し、結合された値を含む配列を作成する必要があります。

{ date: [1379082017487, 1379082015968],
  summary:
   { 'Item A': [2069, 1824],
     'Item B': [8987, 6758],
     'Item C': [1890, 3857]
   }
}

これまでの私の戦略は、ネストされたループを作成することです。トップレベルのオブジェクトを繰り返し処理し、それらの値を「日付」配列に追加します。次に、「summary」オブジェクトを繰り返し処理し、それらの値を各キーを表す配列にプッシュします。最後に、配列を再び追加して、単一の出力オブジェクトを形成します。

私の脳のフリーズは内側のアレイにあります。さまざまな数のキー (「アイテム」) を持つことができます。これらのキーは、任意のコード実行ですべてのオブジェクトに対して同じ名前を持ちますが、実行ごとに異なる名前を持つことができます。内側のループは配列を生成していません ([2069, 1824] など)。

これまでのところ、私は持っています:

var testDates = [];
var itemVals = [];
// iterate over the outer objects
for (var record = 0; record < tests.length; record++) {
    testDates.push(tests[record].date); // this works fine

    // iterate over the inner 'summary' object:
    for (var itemName in tests[record]['summary']) {
        // doesn't produce the appropriate array
        itemVals.push([tests[record]['summary'][itemName]]);
    }

}

アドバイスをありがとう!

4

1 に答える 1