通过匹配相同的键值合并数组中的对象

杰瑞米

抱歉,如果json不够完美,我正试图将其键入Stackoverflow窗口中……无论如何,您可以从下面看到我想获取数组中所有单独的对象并将它们合并到具有匹配的网址。一旦它们合并,所有其他所有都需要从阵列中删除。

var myArray = [
{ 
 id: '123',
 url: 'http://foo.com/1.jpg',
 size: 7,
 qty: 1
},
{
 id: '345',
 url: 'http://foo.com/5.jpg',
 color: 'blue',
 qty: 5
},
{
 id: '678',
 url: 'http://foo.com/1.jpg',
 size: 8,
 qty: 4
}];

我需要将这个数组变成...在下面,您可以看到具有匹配url的对象现在已移到第一个匹配的对象“ variations”键中。之后,它们不再分开显示。它们基本上全部匹配在一起并合并到同一对象中。

var myArray = [{ 
 id: '123',
 url: 'http://foo.com/1.jpg',
 variations:[
     {
       id : '123'
       size : 7,
       qty: 1
     }, 
     {
       id : '678'
       size : 8,
       qty: 4
     }],
{
 id: '345',
 url: 'http://foo.com/5.jpg',
 color: 'blue',
 qty: 5
}];

到目前为止,我有这样的事情:但这只是正在进行中。无法将其带到终点线。

myArray.forEach(function(product, index){
  var sizeVariations = [];
  var currentSearch = product.url;
  var filteredArray = processedProducts.filter(function( obj ) {
    return obj.primary_image === currentSearch;
  });

  if(filteredArray){
    filteredArray.forEach(function(data, index){
      sizeVariations.push({
        id : data.id,
        size : data.size,
        quantity : data.qty
      });
    });
  }
});
Duly Kinsky

您可以执行类似的操作;我没有将id保持在最高级别,因为它看起来像是重复数据。

var myArray = [
{ 
 id: '123',
 url: 'http://foo.com/1.jpg',
 size: 7,
 qty: 1
},
{
 id: '345',
 url: 'http://foo.com/5.jpg',
 color: 'blue',
 qty: 5
},
{
 id: '678',
 url: 'http://foo.com/1.jpg',
 size: 8,
 qty: 4
}];

function mergeObjects(arr)
{
  var resultArray = [];
  var urls = [];
  for(var item in arr)
  {
    var itemIndex = urls.indexOf(arr[item].url);
    if(itemIndex == -1)
    {
      urls.push(arr[item].url);
      var obj = {};
      obj.url = arr[item].url;
      obj.variations = [];
      var variationData = {};
      variationData.id = arr[item].id;
      if(arr[item].size !== undefined)
      {
        variationData.size = arr[item].size;
      }
      if(arr[item].qty !== undefined)
      {
        variationData.qty = arr[item].qty;
      }
      if(arr[item].color !== undefined)
      {
        variationData.color = arr[item].color;
      }
     
      obj.variations.push(variationData);
      resultArray.push(obj);
    }
    else
    {
      var variationData = {};
      variationData.id = arr[item].id;
      if(arr[item].size !== undefined)
      {
        variationData.size = arr[item].size;
      }
      if(arr[item].qty !== undefined)
      {
        variationData.qty = arr[item].qty;
      }
      if(arr[item].color !== undefined)
      {
        variationData.color = arr[item].color;
      }
      resultArray[itemIndex].variations.push(variationData)
    }
    
  }
  return resultArray;
}

console.log(mergeObjects(myArray));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过对象数组中的键值合并或合并数据?

来自分类Dev

将对象键值与数组中的值匹配

来自分类Dev

合并两个不相同的数组对象,在 Typescript 中匹配相同的键

来自分类Dev

如果python中的对象键值相同,则合并字典

来自分类Dev

从对象数组中删除具有相同键值的对象

来自分类Dev

按数组中的相同值合并对象

来自分类Dev

合并数组IOS中的相同对象

来自分类Dev

在JSON数组JavaScript中合并相同的对象

来自分类Dev

通过子数组键值从数组中删除对象

来自分类Dev

Javascript:通过相同的键/值合并/重命名数组中的相似对象

来自分类Dev

将具有相同键值的数组中的JavaScript对象组合

来自分类Dev

如果键值匹配,则从数组中删除对象

来自分类Dev

如何合并键值相同的多个JSON对象

来自分类Dev

合并具有相同键值的子数组

来自分类Dev

如何合并具有相同键值的数组

来自分类Dev

合并具有相同键值的数组

来自分类Dev

合并对象之间的数据,匹配键值

来自分类Dev

Angular Javascript中合并匹配对象的合并数组

来自分类Dev

通过键值从数组中查找和删除对象

来自分类Dev

尝试通过定位键值从数组中删除 json 对象

来自分类Dev

如何使用 Node.js/JavaScript 通过键值合并两个数组值匹配

来自分类Dev

如果对象具有相同的日期,则合并数组中的对象

来自分类Dev

合并具有相同值的对象数组中的对象

来自分类Dev

在对象数组中合并带有“相同键”的对象

来自分类Dev

有两个对象的数组,在这些数组中,如果ID相同,我想匹配ID。我需要具有相同ID的合并信息的新数组

来自分类Dev

将对象数组中的键值更改为具有相同的同级键值

来自分类Dev

在一个数组中合并具有相同键值的多个数组

来自分类Dev

Lodash 合并数组与字典对象键值

来自分类Dev

通过删除相同的键值来简化数组

Related 相关文章

  1. 1

    如何通过对象数组中的键值合并或合并数据?

  2. 2

    将对象键值与数组中的值匹配

  3. 3

    合并两个不相同的数组对象,在 Typescript 中匹配相同的键

  4. 4

    如果python中的对象键值相同,则合并字典

  5. 5

    从对象数组中删除具有相同键值的对象

  6. 6

    按数组中的相同值合并对象

  7. 7

    合并数组IOS中的相同对象

  8. 8

    在JSON数组JavaScript中合并相同的对象

  9. 9

    通过子数组键值从数组中删除对象

  10. 10

    Javascript:通过相同的键/值合并/重命名数组中的相似对象

  11. 11

    将具有相同键值的数组中的JavaScript对象组合

  12. 12

    如果键值匹配,则从数组中删除对象

  13. 13

    如何合并键值相同的多个JSON对象

  14. 14

    合并具有相同键值的子数组

  15. 15

    如何合并具有相同键值的数组

  16. 16

    合并具有相同键值的数组

  17. 17

    合并对象之间的数据,匹配键值

  18. 18

    Angular Javascript中合并匹配对象的合并数组

  19. 19

    通过键值从数组中查找和删除对象

  20. 20

    尝试通过定位键值从数组中删除 json 对象

  21. 21

    如何使用 Node.js/JavaScript 通过键值合并两个数组值匹配

  22. 22

    如果对象具有相同的日期,则合并数组中的对象

  23. 23

    合并具有相同值的对象数组中的对象

  24. 24

    在对象数组中合并带有“相同键”的对象

  25. 25

    有两个对象的数组,在这些数组中,如果ID相同,我想匹配ID。我需要具有相同ID的合并信息的新数组

  26. 26

    将对象数组中的键值更改为具有相同的同级键值

  27. 27

    在一个数组中合并具有相同键值的多个数组

  28. 28

    Lodash 合并数组与字典对象键值

  29. 29

    通过删除相同的键值来简化数组

热门标签

归档