首页 > 解决方案 > 在 JavaScript 中合并两个数组

问题描述

如何为相同的 producId 创建单个数组,但 productImage 和 productImageId 的不同值具有唯一的 productId 但具有不同的 productImage,productImageId 具有相同的 productId 我想要 productImage,productImageId 应该是一个数组并且具有相同的 productId。

var arr1 =  [
        {
            "productID": 85,
            "productImageID": 24801,
            "productImages": "1588578164781.jpg"
        },
        {
            "productID": 85,
            "productImageID": 24802,
            "productImages": "1588578164783.jpg"
        },
        {
            "productID": 84,
            "productImageID": 24799,
            "productImages": "1588575322312.jpeg"
        },
        {
            "productID": 84,
            "productImageID": 24800,
            "productImages": "1588575322346.png"
        }];

var aar2 =  [
        {
            "productID": 85,
            "productTitle": "Product Name",
            "productDesc": "Product Description",
            "productPrice": 140,
            "productComparePrice": 120,
            "isFeatured": 0
        }, {
            "productID": 84,
            "productTitle": "Jeans test",
            "productDesc": "Wrist Black",
            "productPrice": 420,
            "productComparePrice": 12,
            "isFeatured": 1
        }]

我想要如下所示的输出:

output =[
  {
    "productID": 85,
    "productTitle": "Product Name",
    "productDesc": "Product Description",
    "productPrice": 140,
    "productComparePrice": 120,
    "isFeatured": 0,
    "productImages": [
      {
        "productImageID": 24801,
        "productImages": "1588578164781.jpg"
      },
      {
        "productImageID": 24802,
        "productImages": "1588578164783.jpg"
      }
    ]
  },
  {
    "productID": 84,
    "productTitle": "Jeans test",
    "productDesc": "Wrist Black",
    "productPrice": 420,
    "productComparePrice": 12,
    "isFeatured": 1,
    "productImages": [
      {
        "productImageID": 24799,
        "productImages": "1588575322312.jpeg"
      },
      {
        "productImageID": 24800,
        "productImages": "1588575322346.png"
      }
    ]
  }
]

标签: javascriptarrays

解决方案


我认为这应该对你有用。但是可能您需要以另一种方式解决它,您可以加入来自数据库的数据队列,或者如果这些集合是由前端生成的,您可以使用 JavaScript 对象通过其 ID 轻松获取实体。

const output = aar2.map(product => ({
   ...product,
   productImages: arr1.filter(image => image.productID === product.productID)
}));

推荐阅读