Ich habe einen Fall wie: Ich möchte einem JSON-Array in TypeScript wie unten Elemente hinzufügen
[
{
"a" : "a1",
"b" : "b1"
}
]
Jetzt möchte ich dem obigen Objekt Werte hinzufügen, ohne einen neuen Block zu erstellen. Ich möchte beispielsweise ein Schlüssel-Wert-Paar als "C": "c1" und "d": "d1" hinzufügen. Danach muss mein JSON-Array wie folgt aussehen
[
{
"a" : "a1",
"b" : "b1"
"c" : "c1",
"d" : "d1"
}
]
Was ich versucht habe:
let someData : any [] = [];
someData.push({
"a" : "a1",
"b" : b1"
})
someData.push({
"c" : "c1",
"d" : d1"
})
Es werden jedoch zwei Datensätze wie unten erstellt, aber das ist falsch
[
{
"a" : "a1",
"b" : "b1"
}
{
"c" : "c1",
"d" : "d1"
}
]
Außerdem habe ich versucht, unshift
wie folgt zu verwenden
someData.unshift({
"c" : "c1",
"d" : d1"
})
Dies gibt das Ergebnisobjekt als zurück
[
{
"a" : "a1",
"b" : "b1"
}
{
"c" : "c1",
"d" : "d1"
}
]
Gibt es eine Möglichkeit zu tun?
Beispielsweise,
for(int i =0; i<3; i++){
someData.push({
i : i+1
})
Aber der obige Codeblock erzeugt eine falsche Array-Struktur, aber ich möchte, wie unten
{
0 :1,
1:2,
2:3
}
}
4 Antworten
Es soll so sein ...
let someData : any [] = [];
someData.push({
"a" : "a1",
"b" : b1"
})
someData[0]["c"] = "c1";
someData[0]["d"] = "d1";
Wenn Sie also die Werte von someData
protokollieren, wird dies angezeigt
console.log(someData); //[{"a":"a1","b" : "b1", "c":"c1", "d":"d1"}]
Zum Durchlaufen von Werten ...
let valuesToPut = [["c","c1"],["d","d1"]];
for(let i = 0; i < valuesToPut.length; i++){
someData[0][valuesToPut[i][0]] = valuesToPut[i][1]
}
Es gibt wenig Verwirrung zwischen Object
und Array
. Hier versuchen Sie, den Object
, die im Index 0 Ihres Arrays gespeichert sind, ein Element hinzuzufügen.
Lassen Sie uns folgenden Code versuchen:
let someData : any [] = [];
// Create first index of array and create on it your Object.
someData.push({
"a" : "a1",
"b" : b1"
});
// Override first index of array by merge of previous data + new one.
someData[0] = Object.assign(someData[0], {
"c1" : "c1",
"d1" : "d1"
});
Eine andere Möglichkeit, dies zu tun: Object.defineProperties ()
Wie Sie bereits erwähnt haben, handelt es sich um ein Array-JSON-Format.
Wenn Sie also auf ein Element im Array zugreifen, sollten Sie den Array-Index angeben.
Ex:
let tempArray = [
{
"a" : "a1",
"b" : "b1"
}
]
=> tempArray [0] hat diesen Wert.
{
"a" : "a1",
"b" : "b1"
}
Wenn Sie dem tempArray [0] einige zusätzliche Werte hinzufügen, sollten Sie wie folgt auf das Element zugreifen:
tempArray[0]['c'] = "c1";
tempArray[0]['d'] = "d1";
//Let's start with what you're doing
let someData = [];
someData.push({
"a" : "a1",
"b" : "b1"
});
// pushes a collection of 2 key value pairs in as the first entry to someData
someData.push({
"c" : "c1",
"d" : "d1"
});
// pushes a collection of 2 key value pairs in as the second entry to someData
console.log(someData);
// what you might want to do:
someData = [];
someData.push({
"a" : "a1",
"b" : "b1"
});
// pushes a collection of 2 key value pairs in as the first entry to someData
someData[0].c = "c1";
//Sets a value to the key c in the first element of some data
someData[0].d = "d1";
//Sets a value to the key d in the first element of some data
console.log(someData)
// What you probably want to do.
someData = {};
for(let i of [1,2,3,4]){
someData[String.fromCharCode(i+96)] = String.fromCharCode(i+96)+"1";
}
console.log(someData)
Verwandte Fragen
Neue Fragen
arrays
Ein Array ist eine geordnete lineare Datenstruktur, die aus einer Sammlung von Elementen (Werten, Variablen oder Referenzen) besteht, die jeweils durch einen oder mehrere Indizes gekennzeichnet sind. Wenn Sie nach bestimmten Varianten von Arrays fragen, verwenden Sie stattdessen die zugehörigen Tags: [vector], [arraylist], [matrix]. Wenn Sie dieses Tag verwenden, kennzeichnen Sie die Frage in einer für eine Programmiersprache spezifischen Frage mit der verwendeten Programmiersprache.