Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为相同的键但不同的值创建单个数组_Javascript_Arrays_Node.js_Json_Arraylist - Fatal编程技术网

Javascript 如何为相同的键但不同的值创建单个数组

Javascript 如何为相同的键但不同的值创建单个数组,javascript,arrays,node.js,json,arraylist,Javascript,Arrays,Node.js,Json,Arraylist,如何在具有唯一productId的NodeJ中为相同的键但不同的值创建单个数组 但是,使用相同的productId使用不同的productImage,我希望productImage应该是一个数组 对于相同的productId,productImage位于此productImage数组中 var data = [ { "productID":18, "productTitle":"Watch", "productImage":"1588148225540.

如何在具有唯一productId的NodeJ中为相同的键但不同的值创建单个数组 但是,使用相同的productId使用不同的productImage,我希望productImage应该是一个数组 对于相同的productId,productImage位于此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"
      ]
   }
]
这里有一个答案

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);
            }
});

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

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