抱歉,如果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
});
});
}
});
您可以执行类似的操作;我没有将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] 删除。
我来说两句