Ich habe eine JSON-Datei, die doppelte Schlüssel hat und ich möchte den doppelten Schlüssel und ihre Werte zu einem Datensatz zusammenführen.Merge Json mit passenden Werten
Beispiel:
Die Json sieht wie folgt aus:
{
"numbers": {
"0BJA10GH001": {
"links": [
{
"name": "RI-Fliessbild: RG MFB L3 RI_002",
"path": "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf",
"searchNumber": true
},
{
"name": "Katalog Sensor: TGM/siehe 0BJA10GH001 -1_5.1",
"path": "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf",
"searchNumber": false
},
{
"name": "Datenblatt: 0BJA10GH001",
"path": "/Datenblaetter Messstellenliste/RG MFB L3 RI_002/0BJA10GH001.pdf",
"searchNumber": false
}
],
"aliases": [
"0BJA10GH001"
]
},
"0BJA10GH001": {
"links": [
{
"name": "RI-Fliessbild: RG MFB L3 RI_002",
"path": "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf",
"searchNumber": true
},
{
"name": "Komponentenbeschreibung: TGM/---",
"path": "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf",
"searchNumber": false
},
{
"name": "Datenblatt: 0BJA10GH001",
"path": "/Datenblaetter Apparateliste/RG MFB L3 RI_002/0BJA10GH001.pdf",
"searchNumber": false
}
],
"aliases": [
"0BJA10GH001"
]
}
} }
ich es so aussehen wollen:
{
"numbers": {
"0BJA10GH001": {
"links": [
{
"name": "RI-Fliessbild: RG MFB L3 RI_002",
"path": "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf",
"searchNumber": true
},
{
"name": "Katalog Sensor: TGM/siehe 0BJA10GH001 -1_5.1",
"path": "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf",
"searchNumber": false
},
{
"name": "Datenblatt: 0BJA10GH001",
"path": "/Datenblaetter Messstellenliste/RG MFB L3 RI_002/0BJA10GH001.pdf"
},
{
"name": "Komponentenbeschreibung: TGM/---",
"path": "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf",
"searchNumber": false
},
{
"name": "Datenblatt: 0BJA10GH001",
"path": "/Datenblaetter Apparateliste/RG MFB L3 RI_002/0BJA10GH001.pdf",
"searchNumber": false
}
],
"aliases": [
"0BJA10GH001"
]
}
}
}
Die beiden Schlüssel "0BJA10GH001", die identisch sind, und die doppelten Werte werden entfernt.
var SeatWithCat = [{"0BJA10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Katalog Sensor: TGM/siehe 0BJA10GH001 -1_5.1", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BJA10GH001", "path" : "/Datenblaetter Messstellenliste/RG MFB L3 RI_002/0BJA10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BJA10GH001"] },
"0BJA10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: TGM/---", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BJA10GH001", "path" : "/Datenblaetter Apparateliste/RG MFB L3 RI_002/0BJA10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BJA10GH001"] },
"0BMC10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Katalog Sensor: TGM/siehe 0BMC10GH001 -1_5.1", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BMC10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BMC10GH001", "path" : "/Datenblaetter Messstellenliste/RG MFB L3 RI_002/0BMC10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BMC10GH001"] },
"0BMC10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: TGM/---", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BMC10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BMC10GH001", "path" : "/Datenblaetter Apparateliste/RG MFB L3 RI_002/0BMC10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BMC10GH001"] },
"0CFB01BB020" : { "links" : [{ "name" : "RI-Fliessbild: 90034652", "path" : "/C1_RI-Fliessbilder/C1.1/1_2/90034652.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: Messer Gas/HCl in N2", "path" : "/1_Verfahrenstechnik/Teil B/1_B7/1_B7.5/01_0CFB01BB020.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0CFB01BB020", "path" : "/Datenblaetter Apparateliste/90034652/0CFB01BB020.pdf", "searchNumber" : false }], "aliases" : ["0CFB01BB020"] },
"0CFB01BB021" : { "links" : [{ "name" : "RI-Fliessbild: 90034652", "path" : "/C1_RI-Fliessbilder/C1.1/1_2/90034652.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: Messer Gas/NH3 in N2", "path" : "/1_Verfahrenstechnik/Teil B/1_B7/1_B7.5/01_0CFB01BB021.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0CFB01BB021", "path" : "/Datenblaetter Apparateliste/90034652/0CFB01BB021.pdf", "searchNumber" : false }], "aliases" : ["0CFB01BB021"] }}];
function combine(arr) {
var combined = arr.reduce(function(result, item) {
var current = result[item.key];
result[item.key] = !current ? item : {
kks: item.key,
};
return result;
}, {});
return Object.keys(combined).map(function(key) {
return combined[key.key];
});
}
var result = combine(SeatWithCat);
console.log(result);
document.write(JSON.stringify(result));
Dies ist mein Code so weit und es funktioniert für den ersten Teil. Es entfernt die doppelten Schlüssel "0BJA10GH001", aber die Werte innerhalb des Arrays verbinden sich nicht vom doppelten Schlüssel.
Jeder Schlüssel "0BJA10GH001" hat ein "Links" -Array darin und diese "Links" -Arrays sollten sich miteinander verbinden, wenn die Duplikate zusammengeführt werden.
Alle Werte innerhalb der doppelten Schlüssel "0BJA10GH001" sollten in einem Array zusammengeführt werden. Wie kann ich das erreichen? Und einen Schritt weiter, wie kann ich die Duplikate in einem Array löschen?
Vielen Dank. Jetzt
Code:
var SeatWithCat = [{"0BJA10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Katalog Sensor: TGM/siehe 0BJA10GH001 -1_5.1", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BJA10GH001", "path" : "/Datenblaetter Messstellenliste/RG MFB L3 RI_002/0BJA10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BJA10GH001"] },
"0BJA10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: TGM/---", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BJA10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BJA10GH001", "path" : "/Datenblaetter Apparateliste/RG MFB L3 RI_002/0BJA10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BJA10GH001"] },
"0BMC10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Katalog Sensor: TGM/siehe 0BMC10GH001 -1_5.1", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BMC10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BMC10GH001", "path" : "/Datenblaetter Messstellenliste/RG MFB L3 RI_002/0BMC10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BMC10GH001"] },
"0BMC10GH001" : { "links" : [{ "name" : "RI-Fliessbild: RG MFB L3 RI_002", "path" : "/C1_RI-Fliessbilder/C1.1/3/RG MFB L3 RI_002.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: TGM/---", "path" : "/1_Verfahrenstechnik/Teil B/1_B5/1_B5.1/01_0BMC10GH001.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0BMC10GH001", "path" : "/Datenblaetter Apparateliste/RG MFB L3 RI_002/0BMC10GH001.pdf", "searchNumber" : false }], "aliases" : ["0BMC10GH001"] },
"0CFB01BB020" : { "links" : [{ "name" : "RI-Fliessbild: 90034652", "path" : "/C1_RI-Fliessbilder/C1.1/1_2/90034652.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: Messer Gas/HCl in N2", "path" : "/1_Verfahrenstechnik/Teil B/1_B7/1_B7.5/01_0CFB01BB020.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0CFB01BB020", "path" : "/Datenblaetter Apparateliste/90034652/0CFB01BB020.pdf", "searchNumber" : false }], "aliases" : ["0CFB01BB020"] },
"0CFB01BB021" : { "links" : [{ "name" : "RI-Fliessbild: 90034652", "path" : "/C1_RI-Fliessbilder/C1.1/1_2/90034652.pdf", "searchNumber" : true },{ "name" : "Komponentenbeschreibung: Messer Gas/NH3 in N2", "path" : "/1_Verfahrenstechnik/Teil B/1_B7/1_B7.5/01_0CFB01BB021.pdf", "searchNumber" : false },{ "name" : "Datenblatt: 0CFB01BB021", "path" : "/Datenblaetter Apparateliste/90034652/0CFB01BB021.pdf", "searchNumber" : false }], "aliases" : ["0CFB01BB021"] }}];
function combine(arr) {
var combined = arr.reduce(function(result, item) {
var current = result[item.key];
result[item.key] = !current ? item : {
kks: item.key,
};
return result;
}, {});
return Object.keys(combined).map(function(key) {
return combined[key.key];
});
}
var result = combine(SeatWithCat);
console.log(result);
Bitte formatieren Sie Ihre Antwort, vor allem Codeblöcke. – Arount
Sie können keine doppelten Schlüssel im JavaScript-Objekt haben. Dein Objekt ist falsch. – Shubham
Ich möchte die Duplikate entfernen, indem Sie sie mit ihren Gegenstücken zusammenführen. – silvankaufmann