gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:22:11 24 4
gpt4 key购买 nike

抱歉,如果 json 不完美,我试图将其输入 Stackoverflow 窗口...无论如何,您可以从下面看到我想获取数组中的所有单独对象并将它们合并到第一个具有匹配 url 的数组。一旦它们被合并,所有其他的都需要从数组中移除。

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 的对象现在已移至第一个匹配对象的“变体”键中。之后它们不再分开出现。它们基本上都匹配在一起并合并到同一个对象中。

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

最佳答案

你可以做类似的事情;我没有将 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));

关于javascript - 通过匹配相同的键值合并数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com