簡體   English   中英

如何基於相同的日期合並兩個對象數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM