我會有9個動態數組。 我需要考慮一個參數來組合它們,它是ItemNumber。 我的大部分數組都會有一個項目,除了三個可能有多個數組的數組之外。基於密鑰的組合陣列
因此假設在下面的例子中。
var arr1 = [
{ 'IM_Id': 1, 'IM_Name': 'Hello', 'ItemNumber': 2001 },
{ 'IM_Id': 2, 'IM_Name': 'World', 'ItemNumber': 2002 }
];
var arr2 = [
{ 'FE_Id': 2, 'FE_Name': 'Wall', 'Code': 'XYZ', 'ItemNumber': 2001 },
{ 'FE_Id': 3, 'FE_Name': 'WallMart', 'Code': '009F', 'ItemNumber': 2002 }
];
var arr3 = [
{ 'FC_Id': 2, 'FC_Name': 'ABC', 'Value': 009, 'ItemNumber': 2001 },
{ 'FC_Id': 3, 'FC_Name': 'PQR', 'Value': 007, 'ItemNumber': 2001 },
{ 'FC_Id': 4, 'FC_Name': 'ABCD', 'Value': 004, 'ItemNumber': 2002 },
{ 'FC_Id': 5, 'FC_Name': 'PQRS', 'Value': 002, 'ItemNumber': 2002 }
];
在上述陣列ARR1和ARR2只有一個與2001 ItemNumber項和同爲2002年ItemNumber然而 具有ARR3 2項兩者的項號。
因此,當創建結果數組時,具有單個項目的數組將被重複考慮,以考慮具有多個數組的其他項目。
所以得到的數組將如下所示。
var resultingArray = [
{ 'IM_Id': 1, 'IM_Name': 'Hello', 'FE_Id': 2, 'FE_Name': 'Wall', 'Code': 'XYZ',
'FC_Id': 2, 'FC_Name': 'ABC', 'Value': 009 },
{ 'IM_Id': 1, 'IM_Name': 'Hello', 'FE_Id': 2, 'FE_Name': 'Wall', 'Code': 'XYZ',
'FC_Id': 3, 'FC_Name': 'PQR', 'Value': 007 },
{ 'IM_Id': 2, 'IM_Name': 'World', 'FE_Id': 3, 'FE_Name': 'WallMart', 'Code': '009F',
'FC_Id': 4, 'FC_Name': 'ABCD', 'Value': 004 },
{ 'IM_Id': 2, 'IM_Name': 'World', 'FE_Id': 3, 'FE_Name': 'WallMart', 'Code': '009F',
'FC_Id': 5, 'FC_Name': 'PQRS', 'Value': 002 }
];
可以看到,考慮ARR3的匹配元素與FC_Id = 2和FC_Id = 3 ItemNumber 2001所得的陣列具有重複ARR1和ARR2的但是具有不同的ARR3項中的項。
我試過下面的代碼,但它只是給了我一個具有類似ItemNumber的單個項目。
我也可能爲單個ItemNumber
也有多個項目。
function joinObjects() {
var idMap = {}, key, property;
// Iterate over arguments
for (var i = 0; i < arguments.length; i++) {
// Iterate over individual argument arrays (aka json1, json2)
for (var j = 0; j < arguments[i].length; j++) {
var currentID = arguments[i][j]['ItemMasterNumber'];
if (!idMap[currentID]) {
idMap[currentID] = {};
}
// Iterate over properties of objects in arrays (aka id, name, etc.)
for (key in arguments[i][j]) {
idMap[currentID][key] = arguments[i][j][key];
}
}
}
// Push properties of idMap into an array
var newArray = [];
for (property in idMap) {
newArray.push(idMap[property]);
}
return newArray;
}
var finalArray = joinObjects(arr1, arr2, arr3);
我實際上將有9個這樣的陣列,其中只有3可能有多個項目是多個項目進行相同項目編號。
我也在6個這樣的數組中添加了一個示例示例。
var arr1 = [{'IM_Id': 1, 'IM_Name': 'Hello', 'ItemNumber': 2001}, {'IM_Id': 2, 'IM_Name': 'World', 'ItemNumber': 2002}];
var arr2 = [{'FE_Id': 2, 'FE_Name': 'Wall', 'Code': 'XYZ', 'ItemNumber': 2001}, {'FE_Id': 3, 'FE_Name': 'WallMart', 'Code': '009F', 'ItemNumber': 2002}];
var arr3 = [{'FC_Id': 2, 'FC_Name': 'ABC', 'Value': 009, 'ItemNumber': 2001},
{'FC_Id': 3, 'FC_Name': 'PQR', 'Value': 007, 'ItemNumber': 2001},
{'FC_Id': 4, 'FC_Name': 'ABCD', 'Value': 004, 'ItemNumber': 2002},
{'FC_Id': 5, 'FC_Name': 'PQRS', 'Value': 002, 'ItemNumber': 2002}
];
var arr4 = [{'OC_Id':6,'OC_Name':'Rai','OC_Price':'$30','ItemNumber': 2001},{'OC_Id': 7,'OC_Name':'Raj','OC_Price':'$60','ItemNumber': 2002}];
var arr5 = [{'CH_Id':4,'CH_Name':'Sen','CH_Code':'LMN','ItemNumber': 2001},{'CH_Id':7,'CH_Name':'Ken','CH_Code':'IJK','ItemNumber': 2002}];
var arr6 = [{'CO_Id':5,'CO_Name':'xyz','CO_Value':'qqq','ItemNumber': 2001},{'CO_Id':9,'CO_Name':'pqr','CO_Code':'LMN','ItemNumber': 2001}];
,所得陣列應該像
var resultingArray = [
{'IM_Id': 1, 'IM_Name': 'Hello', 'FE_Id': 2, 'FE_Name': 'Wall', 'Code': 'XYZ',
'FC_Id': 2, 'FC_Name': 'ABC', 'Value': 009,'OC_Id':6,'OC_Name':'Rai','OC_Price':'$30','CH_Id':4,'CH_Name':'Sen','CH_Code':'LMN',
'CO_Id':5,'CO_Name':'xyz','CO_Value':'qqq'
},
{'IM_Id': 1, 'IM_Name': 'Hello', 'FE_Id': 2, 'FE_Name': 'Wall', 'Code': 'XYZ',
'FC_Id': 3, 'FC_Name': 'PQR', 'Value': 007,'OC_Id':6,'OC_Name':'Rai','OC_Price':'$30','CH_Id':4,'CH_Name':'Sen','CH_Code':'LMN',
'CO_Id':9,'CO_Name':'pqr','CO_Code':'LMN'
},
{'IM_Id': 2, 'IM_Name': 'World', 'FE_Id': 3, 'FE_Name': 'WallMart', 'Code': '009F',
'FC_Id': 4, 'FC_Name': 'ABCD', 'Value': 004,'OC_Id': 7,'OC_Name':'Raj','OC_Price':'$60','CH_Id':7,'CH_Name':'Ken','CH_Code':'IJK',
'CO_Id':"-",'CO_Name':'-','CO_Code':'-'
},
{'IM_Id': 2, 'IM_Name': 'World', 'FE_Id': 3, 'FE_Name': 'WallMart', 'Code': '009F',
'FC_Id': 5, 'FC_Name': 'PQRS', 'Value': 002,'OC_Id': 7,'OC_Name':'Raj','OC_Price':'$60','CH_Id':7,'CH_Name':'Ken','CH_Code':'IJK',
'CO_Id':"-",'CO_Name':'-','CO_Code':'-'
}
另外,還要注意arr6既有用相同的項目編號2001的兩個項目和項目編號2002
任何元素,在這種情況下,它在最後兩個元素的結果數組中取空或只是一個「 - 」。
問題看起來很熟悉:http://stackoverflow.com/questions/43603443/combining -multiple-arrays –