オブジェクトの配列で同じ日付値を持つすべてのオブジェクトを統合したいと思います。
すでにマップ機能を使ってみました。
私は次の種類のオブジェクトをしなければなりません
[
{a:1, b:2, date:'2019-01-05'}, {a:12, b:22, date:'2019-01-05'}, {a:13, b:23, date:'2019-01-05'},
{a:11, b:2, date:'2019-01-06'}, {a:1, b:22, date:'2019-01-06'}, {a:1, b:23, date:'2019-01-07'}
]
今、私は同じ日付を持つすべてのオブジェクトを要約するこのようなオブジェクトが欲しいです:
[{date:'2019-01-05', data:[{a:1,b:2},....and so on]}]
だから現在私はこの解決策を思いついた:
items = [...]
moddedItems = [];
this.items.map((data)=>{
let tempArray = this.items.filter((obj) => {
return obj.date === data.date;
});
this.moddedItems = [...this.moddedItems, {date:data.date, data:[...tempArray]}];
console.log(this.moddedItems)
});
Map
日付でキー設定されたキーを使用できます。それぞれについて、最初に空のdata
プロパティを持つオブジェクトを格納し、次にdata
元のデータを繰り返すだけでプロパティにデータを入力します。
const data = [
{a:1, b:2, date:'2019-01-05'}, {a:12, b:22, date:'2019-01-05'}, {a:13, b:23, date:'2019-01-05'},
{a:11, b:2, date:'2019-01-06'}, {a:1, b:22, date:'2019-01-06'}, {a:1, b:23, date:'2019-01-07'}
];
const map = new Map(data.map(({date}) => [date, { date, data: [] }]));
data.forEach(({date, ...o}) => map.get(date).data.push(o));
const result = [...map.values()];
console.log(result);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加