[英]How to merge two arrays of objects based on the same date
實際上,我想將所有具有相同日期的產品合並到下面的同一個對象中,我嘗試了很多算法但它不起作用所以這就是我發布這篇文章的原因。 您可以找到數據和預期結果的示例。
let obj = {}; for(let i = 0; i < this.data.length; i++){ let date = this.data[i].Date; let p_date = obj[date] || {}; obj[date] = Object.assign(p_date, this.data[i]); } let result = Object.values(obj); return result;
this.data = [
{
"Date": "12/06/2019",
"Rank": 1,
"ASIN": "B01N9J7MLI",
"Rating": "4,1",
"Reviews": 4592,
"Price": "114,99",
"Prime": "No"
},
{
"Date": "12/06/2019",
"Rank": 2,
"ASIN": "B074QXGBG6",
"Rating": 4,
"Reviews": 29163,
"Price": "60,99",
"Prime": "No"
}];
預期結果 :
this.data = {
"Date": "12/06/2019",
"Products": [
{
"Date": "12/06/2019",
"Rank": 1,
"ASIN": "B01N9J7MLI",
"Rating": "4,1",
"Reviews": 4592,
"Price": "114,99",
"Prime": "No"
},
{
"Date": "12/06/2019",
"Rank": 2,
"ASIN": "B074QXGBG6",
"Rating": 4,
"Reviews": 29163,
"Price": "60,99",
"Prime": "No"
}
],
}
謝謝你的回答
使用Array#reduce將數據累積到具有日期屬性的對象中。 Foreach 對象查看累積對象中是否存在具有此日期的屬性。 如果沒有使用屬性日期和產品(使用空數組)創建它。 在這兩種情況下,將當前對象添加到此數組中。
最后使用Object.values從您的對象中獲取值以獲得所需的數組。
this.data = [ { "Date": "12/06/2019", "Rank": 1, "ASIN": "B01N9J7MLI", "Rating": "4,1", "Reviews": 4592, "Price": "114,99", "Prime": "No" }, { "Date": "12/06/2019", "Rank": 2, "ASIN": "B074QXGBG6", "Rating": 4, "Reviews": 29163, "Price": "60,99", "Prime": "No" }]; let res = Object.values(this.data.reduce((acc, cur) => { if (!acc[cur.Date]) acc[cur.Date] = {Date: cur.Date, Products: []}; acc[cur.Date].Products.push(cur); return acc; }, {})); console.log(res);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.