【问题标题】:How to create single array for same key but different values如何为相同的键但不同的值创建单个数组
【发布时间】:2020-08-13 12:02:00
【问题描述】:

如何在具有唯一 productId 的 nodeJs 中为相同键但不同值创建单个数组 但是具有相同productId的不同productImage我想要productImage应该是一个数组 并且productId相同,productImages在这个productImage数组中。

var data = [
   {
      "productID":18,
      "productTitle":"Watch",
      "productImage":"1588148225540.jpg"
   },
   {
      "productID":18,
      "productTitle":"Watch",
      "productImage":"15881482433232.jpg"
   },
   {
      "productID":19,
      "productTitle":"Shirt",
      "productImage":"1588148214343.jpg"
   }
]

我的预期输出应该是:

[
   {
      "productID":18,
      "productTitle":"Watch",
      "productImage":[
         "1588148225540.jpg",
         "15881482433232.jpg"
      ]
   },
   {
      "productID":19,
      "productTitle":"Shirt",
      "productImage":[
         "1588148214343.jpg"
      ]
   }
]

【问题讨论】:

    标签: javascript arrays node.js json arraylist


    【解决方案1】:

    您可以使用 lodash 库中的 uniqBy 函数

    const result = _.uniqBy(products, 'productID');
    

    【讨论】:

      【解决方案2】:

      这里有答案

      var data = [
         {
            "productID":18,
            "productTitle":"Watch",
            "productImage":"1588148225540.jpg"
         },
         {
            "productID":18,
            "productTitle":"Watch",
            "productImage":"15881482433232.jpg"
         },
         {
            "productID":19,
            "productTitle":"Shirt",
            "productImage":"1588148214343.jpg"
         }
      ]
      
      let output =[];
                data.forEach(function(item) {
                  var existing = output.filter(function(v, i) {
                    return v.productID == item.productID;
                  });
                  if (existing.length) {
                    var existingIndex = output.indexOf(existing[0]);
      output[existingIndex].productImage =
      output[existingIndex].productImage.concat(item.productImage);
                  } else {
                    if (typeof item.productImage == 'string')
                      item.productImage = item.productImage;
                      item.productThumbImage = [item.productThumbImage];
                      output.push(item);
                  }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 2020-08-24
        • 1970-01-01
        • 2015-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多