Ich habe 2 Arrays von Objekten: ArtikelListe und ArtikelFeeded. Alle Objekte in jedem Array haben die gleiche Struktur (Anzahl der Schlüssel/Werte). Einer dieser Schlüssel hat die gleiche 'Bedeutung', aber einen anderen Namen (item_id auf itemsList, id auf itemsFetched). Ihre Werte sind gleich.Filter und klonen Objekteigenschaften
Ich brauche die itemsList Array filtern und nur die Objekte lassen, die den item_id Wert gleich den id Wert auf itemsFetched. Kopieren Sie dann den Schlüssel/Wert count von jedem Objekt auf dem Array itemsFetched (das mit item_id = id übereinstimmt) zum gefilterten Array.
Ich habe einen funktionierenden Code, aber ich bin sicher, es ist nicht der beste Weg, um dieses Problem zu lösen. Ich habe schon vorher etwas Ähnliches gefragt (bezüglich des Filterteils), das mein Problem gelöst hat, aber da ich nach der Filterung den "Zähl" -Teil hinzufügen musste, habe ich das ganze Ding neu erfunden.
itemsList (Probe)
[
{
"id": 0,
"name": "Egg",
"img": "http://www.serebii.net/pokemongo/items/egg.png"
},
{
"id": 1,
"name": "Pokeball",
"img": "http://www.serebii.net/pokemongo/items/20pokeballs.png"
},
{
"id": 2,
"name": "Greatball",
"img": "http://www.serebii.net/pokemongo/items/greatball.png"
},
{
"id": 401,
"name": "Incense",
"img": "http://www.serebii.net/pokemongo/items/incense.png"
},
{
"id": 901,
"name": "Incubator (Unlimited)",
"img": "http://www.serebii.net/pokemongo/items/eggincubator.png"
}
]
itemsFetched (Probe)
[
{
"item_id": 1,
"count": 50,
"unseen": true
},
{
"item_id": 401,
"count": 2,
"unseen": true
},
{
"item_id": 901,
"count": 1,
"unseen": true
}
]
resultArray (was ich am Ende wollen)
[
{
"id": 1,
"name": "Pokeball",
"count": 50,
"img": "http://www.serebii.net/pokemongo/items/20pokeballs.png",
},
{
"id": 401,
"name": "Incense",
"count": 2,
"img": "http://www.serebii.net/pokemongo/items/incense.png"
},
{
"id": 901,
"name": "Incubator (Unlimited)",
"count": 1,
"img": "http://www.serebii.net/pokemongo/items/eggincubator.png"
}
]
mein aktueller Code (Arbeits)
let arr = [];
itemsFetched.forEach((item) => {
itemsList.forEach((item2) => {
if (item.item_id === item2.id) {
arr.push({
"id": item.item_id,
"name": item2.name,
"count": item.count,
"img": item2.img
});
}
});
});
PS: Ich bin in der Lage ES6/7 Syntax/Funktionen zu verwenden.
Am besten ist es, diese Verarbeitung auf dem Server durchzuführen. Geben Sie immer Daten zurück, die für den Browser formatiert sind. Dann müssen Sie nicht auf jeder Seite, die diese Daten benötigt, dieselbe Datenmanipulation durchführen. – Luke101
Ja, ich bin mir dessen bewusst. Dies geschieht serverseitig. Eines der Arrays befindet sich in einer JSON-Datei und dessen Art einer Vorlage, das andere ist eine Antwort auf einen externen API-Aufruf. – nip
Er versucht, die ID von einem Array zu bekommen. hier --- >> if (itemsFetched.item_id === itemsList.id) –