次のような一連のオブジェクトを繰り返し処理しています。
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]]);
}
}
アドバイスをありがとう!