[英]map array with more than one object into another array
這是原始數組:它可以有一個或多個對象。 在每個 object 中都有一個地址和一個 mitglieder 數組。
const original = [
{
"adresse":{
"strasse":"Streetone",
"plz":"55555",
"ort":"Hamburg",
"xy": "aaaaaa"
},
"mitglieder":[
{
"zugestimmt":true,
"nummer":"345",
"nachname":"Meier",
"vorname":"Peter",
"geburtsDatum":"1980-01-01"
},
{
"zugestimmt":true,
"nummer":"435",
"nachname":"Haushalt",
"vorname":"Anderer",
"geburtsDatum":"1980-01-01"
},
]
},
{
"adresse":{
"street":"Streettwo",
"plz":"34444",
"ort":"Hamburg",
"xy": "bbbbb"
},
"mitglieder":[
{
"zugestimmt":true,
"nummer":"345",
"nachname":"Muster",
"vorname":"Maria",
"geburtsDatum":"1980-01-01",
"xy" : {a:'1', b:'2'}
},
{
"zugestimmt":true,
"nummer":"345",
"nachname":"Muster",
"vorname":"Maria",
"geburtsDatum":"1980-01-01",
"xy" : {a:'1', b:'2'}
},
]
}
];
我想把它 map 放到這個數組中:這應該是原始數組中所有對象的 mitglieder 數組。 街道,plz 和 ort 來自地址鍵。 “arrayIwant”應該只有這些屬性,而不是屬性“xy”或其他可以在原始數組中的屬性。
let arrayIwant = [
{
vorname: original[0].mitglieder[0].vorname,
nachname: original[0].mitglieder[0].nachname,
geburtsdatum: original[0].mitglieder[0].geburtsDatum,
zugestimmt: original[0].mitglieder[0].zugestimmt,
strasse: original[0].adressse.street,
plz: original[0].adresse.plz,
ort: original[0].adresse.ort,
},
{
vorname: original[0].mitglieder[1].vorname,
nachname: original[0].mitglieder[1].nachname,
geburtsdatum: original[0].mitglieder[1].geburtsDatum,
zugestimmt: original[0].mitglieder[1].zugestimmt,
strasse: original[0].adresse.street,
plz: original[0].adresse.plz,
ort: original[0].adresse.ort,
},
{
vorname: original[1].mitglieder[0].vorname,
nachname: original[1].mitglieder[0].nachname,
geburtsdatum: original[1].mitglieder[0].geburtsDatum,
zugestimmt: original[1].mitglieder[0].zugestimmt,
strasse: original[1].adresse.street,
plz: original[1].adresse.plz,
ort: original[1].adresse.ort,
},
{
vorname: original[1].mitglieder[1].vorname,
nachname: original[1].mitglieder[1].nachname,
geburtsdatum: original[1].mitglieder[1].geburtsDatum,
zugestimmt: original[1].mitglieder[1].zugestimmt,
strasse: original[1].adresse.street,
plz: original[1].adresse.plz,
ort: original[1].adresse.ort,
}
]
感謝您的幫助
將Array#flatMap
和Array#map
與展開運算符一起使用,如下所示:
const original = [ { "adresse":{ "street":"Streetone", "plz":"55555", "ort":"Hamburg" }, "mitglieder":[ { "zugestimmt":true, "nummer":"345", "nachname":"Meier", "vorname":"Peter", "geburtsDatum":"1980-01-01" }, { "zugestimmt":true, "nummer":"435", "nachname":"Haushalt", "vorname":"Anderer", "geburtsDatum":"1980-01-01" }, ] }, { "adresse":{ "street":"Streettwo", "plz":"34444", "ort":"Hamburg" }, "mitglieder":[ { "zugestimmt":true, "nummer":"345", "nachname":"Muster", "vorname":"Maria", "geburtsDatum":"1980-01-01" }, { "zugestimmt":true, "nummer":"345", "nachname":"Muster", "vorname":"Maria", "geburtsDatum":"1980-01-01" }, ] } ], output = original.flatMap( ({adresse,mitglieder}) => mitglieder.map(mitg => delete mitg.nummer && ({...mitg,...adresse})) ); console.log( output );
這很簡單。 您想為original
數組的每個元素中的mitglieder
數組的每個元素創建一個新的 object。
let original = [ { "adresse":{ "street":"Streetone", "plz":"55555", "ort":"Hamburg" }, "mitglieder": [ { "zugestimmt":true, "nummer":"345", "nachname":"Meier", "vorname":"Peter", "geburtsDatum":"1980-01-01" }, { "zugestimmt":true, "nummer":"435", "nachname":"Haushalt", "vorname":"Anderer","geburtsDatum":"1980-01-01" }, ] }, { "adresse":{ "street":"Streettwo", "plz":"34444", "ort":"Hamburg"}, "mitglieder": [ { "zugestimmt":true, "nummer":"345", "nachname":"Muster", "vorname":"Maria", "geburtsDatum":"1980-01-01" }, { "zugestimmt":true, "nummer":"345", "nachname":"Muster", "vorname":"Maria", "geburtsDatum":"1980-01-01" }, ] } ] myArray = original.reduce( (accum, elem) => { elem.mitglieder.forEach( (mitglieder) => { obj = {} // create the new object Object.assign(obj, elem.adresse) // copy the adresse properties Object.assign(obj, mitglieder) // copy the mitglieder properties obj.strasse = obj.street; // rename property delete obj.street // remove property with old name delete obj.nummer // remove unwanted property accum.push(obj) // put the new object into the accumulator }) return accum }, []) console.log(myArray)
我已經用我需要的道具在 Output 陣列上完成了 map:
const result = output.map(mitglied => ({
vorname: mitglied.vorname,
nachname: mitglied.nachname,
geburtsDatum: mitglied.geburtsDatum,
zugestimmt: mitglied.zugestimmt,
strasse: mitglied.street,
plz: mitglied.plz,
ort: mitglied.ort
}))
現在我的結果中只有我需要的道具。 感謝 PeterKA 和 Tribrogargan 的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.