2017-04-25 3 views
-1

Ich werde zuerst mit einem Beispiel zu erklären, was ich erreichen möchte. Ich habe einen Schlüssel namens "Code" als Merging-Parameter.Merge mehrere Array mit Subarrays basierend auf Schlüssel

Beispiel:

var Items = [{'Item_Id':1,'Item_Name':'Soap','Code':001},[{'Item_Id':2,'Item_Name':'Powder','Code':002] 

var ItemPrice = [{'ItemPrice_Id':1,'ItemPrice_ItemId':1,'Price':'10$','Code':001},[{'ItemPrice_Id':2,'ItemPrice_ItemId':2,'Price':'20$','Code':002] 

var ItemFeatures = [{'FeatureId':2,'FeatureName':'Cool','Code':001},{'FeatureId':3,'FeatureName':'Nice','Code':001}, 
[{'FeatureId':4,'FeatureName':'Pretty','Code',002},{'FeatureId':5,'FeatureName':'Beautiful','Code':002} 

]; 

für jetzt nur noch am überlegen 3-Arrays jedoch I 9-Arrays insgesamt haben wird. Meine resultierende Array sollte die Elemente mit Schlüssel als Code kombinieren. Wenn Sie hier sehen, dass ItemFeatures 2 Elemente mit ähnlichem Code 001 und 002 hat, wird es in ein Subarray konvertiert.

Und so sollte das Ergebnis etwas wie unten sein.

[{'Item_Id':1,'Item_Name':'Soap','ItemPrice_Id':1,'ItemPrice_ItemId':1,'Price':'10$','ItemFeatures': [{'FeatureId':2,'FeatureName':'Cool'},{'FeatureId':3,'FeatureName':'Nice'}] 
}, 
{'Item_Id':2,'Item_Name':'Powder','ItemPrice_Id':2,'ItemPrice_ItemId':2,'Price':'20$','ItemFeatures': [{'FeatureId':4,'FeatureName':'Pretty'},{'FeatureId':5,'FeatureName':'Beautiful'}] 
}]; 

];

Hier im Beispiel wird ItemFeatures in ein Subarray konvertiert, da es mehrere Elemente mit demselben Code enthält. Ich werde zwei weitere Arrays haben, die mehrere Elemente mit demselben Code haben werden. Und wie das ItemFeatures Sub-Array im resultierenden Array ist, brauche ich auch die anderen Sub-Arrays.

Wie soll ich das tun? Kannst du mir bitte helfen, dies zu lösen? Bin ein Neuling für JS und Bit stecken.

Antwort

0

Sie eine Kombination aus Array.map verwenden können, Array.find, Array.filter und Object.assign Objekte zu finden, passende und verschmelzen sie zu einem:

var Items = [{'Item_Id':1,'Item_Name':'Soap','Code':001}, {'Item_Id':2,'Item_Name':'Powder','Code':002}] 
 
var ItemPrice = [{'ItemPrice_Id':1,'ItemPrice_ItemId':1,'Price':'10$','Code':001}, {'ItemPrice_Id':2,'ItemPrice_ItemId':2,'Price':'20$','Code':002}]; 
 
var ItemFeatures = [{'FeatureId':2,'FeatureName':'Cool','Code':001},{'FeatureId':3,'FeatureName':'Nice','Code':001}, {'FeatureId':4,'FeatureName':'Pretty','Code': 002}, {'FeatureId':5,'FeatureName':'Beautiful','Code':002}]; 
 

 
// convert Items into another array of objects 
 
const merged = Items.map((item) => { 
 
    // add all of the matching ItemPrice properties to Item 
 
    return Object.assign(item, ItemPrice.find(iprice => iprice.Code === item.Code), { 
 
    // add a key "ItemFeatures" with matching ItemFeatures 
 
    ItemFeatures: ItemFeatures.filter(feature => feature.Code === item.Code) 
 
    }); 
 
}); 
 

 
console.log(merged);

Verwandte Themen