合併 JSON 陣列日期基於 JavaScript
假設我們有以下物件陣列 −
const arr = [ { "date" : "2010-01-01", "price" : 30 }, { "date" : "2010-02-01", "price" : 40 }, { "date" : "2010-03-01", "price" : 50 }, { "date" : "2010-01-01", "price2" : 45 }, { "date" : "2010-05-01", "price2" : 40 }, { "date" : "2010-10-01", "price2" : 50 } ];
我們需要編寫一個接收這一個陣列的 JavaScript 函式。該函式應當基於物件的 "date" 屬性合併物件。
示例
const arr = [ { "date" : "2010-01-01", "price" : 30 }, { "date" : "2010-02-01", "price" : 40 }, { "date" : "2010-03-01", "price" : 50 }, { "date" : "2010-01-01", "price2" : 45 }, { "date" : "2010-05-01", "price2" : 40 }, { "date" : "2010-10-01", "price2" : 50 } ]; const mergeArray = (arr = []) => { const data = arr.slice(); data.sort((a, b) => new Date(a.date) - new Date(b.date)) const res = [] data.forEach(el => { if(!this[el.date]) { this[el.date] = { date: el.date, price: null, price2: null } res.push(this[el.date]) } this[el.date] = Object.assign(this[el.date], el) }); return res; } console.log(JSON.stringify(mergeArray(arr), undefined, 4));
輸出
控制檯中的輸出為 −
[ { "date": "2010-01-01", "price": 30, "price2": 45 }, { "date": "2010-02-01", "price": 40, "price2": null }, { "date": "2010-03-01", "price": 50, "price2": null }, { "date": "2010-05-01", "price": null, "price2": 40 }, { "date": "2010-10-01", "price": null, "price2": 50 } ]
廣告