尝试对嵌套对象数组中的对象进行分组时遇到一些问题

Having some issue when trying to group objects from nested array of objects

我正在尝试对一些嵌套的对象数组进行分组。在我下面的数据中,有一个 'products' 键 属性。如果 vendor.email 相同,我将尝试对产品进行分组。对产品进行分组后,我还想在每个组上放置 paymentDetails 键 属性。

这是我的代码。我可以对产品进行分组,但无法为每个组设置 paymentDetails 键和值。

const data= [
        {
            _id: "622d70a49bd88b1599026318",
            products: [
                {
                    _id: "6223186e2278d4e502f5264a",
                    title: "Product number 1",
                    price: 600,
                    cartQuantity: 1,
                    vendor: {email: "vendor1@gmail.com"}
                },
                {
                    _id: "622d4e9f9bd88b1599026317",
                    title: "asdas",
                    price: 100,
                    cartQuantity: 5,
                    vendor: {
                        email: "vendor2@gmail.com"
                    }
                },
                 {
                    _id: "622d4e9f9bd88b1599026317",
                    title: "asdas",
                    price: 100,
                    cartQuantity: 5,
                    vendor: {
                        email: "vendor2@gmail.com"
                    }
                },
            ],
            paymentDetails: {
                createdId: 1647145079,
                date: "Sun Mar 13 2022",
                amount: 700,
                email: "user@gmail.com",
                last4: "4242",
                transaction: "p"
            },
            status: "Pending",
            billing: {
                country: "BD",
                name: "Md. Fathe Karim",
                phone: "+88010000000",
                line1: "Madhabdi",
                city: "Narshingdi",
                postal_code: "1604",
                state: "Bandarban"
            }
        }]

const mapped = {};                       // MY function
data[0].products.forEach(item => {
  if (item.vendor.email in mapped) return mapped[item.vendor.email].push(item); 
  mapped[item.vendor.email] = [item];
});

const expectedFormat = Object.keys(mapped).map(key => {
  const o = {}; 
  o["orders"] = mapped[key];
  return o; 
});
console.log(expectedFormat)

我的预期结果是:

[
  {
    "orders": [
      {
        "_id": "6223186e2278d4e502f5264a",
        "title": "Product number 1",
        "price": 600,
        "vendor": {
          "email": "vendor1@gmail.com"
        }
      }
    ],
    "paymentDetails": {
      createdId: 1647145079,
      amount: 700,
      email: "user@gmail.com",
    }
  },
  {
    "orders": [
      {
        "_id": "622d4e9f9bd88b1599026317",
        "title": "Product number 2",
        "price": 100,
        "vendor": {
          "email": "vendor2@gmail.com"
        }
      },
      {
        "_id": "622d4e9f9bd88b1599026317",
        "title": "Product number 3",
        "price": 100,
        "vendor": {
          "email": "vendor2@gmail.com"
        }
      }
    ],
    "paymentDetails": {
      createdId: 1647145079,
      amount: 700,
      email: "user@gmail.com",
    }
  }
]

expectedFormat.forEach(orders => orders.paymentDetails = data[0].paymentDetails);有效吗?我可能理解错了。

如果您想要添加的不仅仅是 paymentDetails 键,请在箭头后添加方括号。

expectedFormat.forEach(orders => {
  orders.paymentDetails = data[0].paymentDetails;
  orders.status = data[0].status;
  orders.billing = data[0].billing;
});