Jedes Element dieses Arrays ist eine Nummer.
var items = Array(523,3452,334,31, ...5346);
Wie ersetze ich eine Zahl durch ein Array durch eine neue?
Zum Beispiel möchten wir 3452 durch 1010 ersetzen. Wie würden wir das tun?
javascript
arrays
James
quelle
quelle
replace
Methode für Arrays?Antworten:
Es wird außerdem empfohlen, die Konstruktormethode nicht zum Initialisieren Ihrer Arrays zu verwenden. Verwenden Sie stattdessen die wörtliche Syntax:
Sie können den
~
Operator auch verwenden , wenn Sie sich für knappes JavaScript interessieren und den-1
Vergleich verkürzen möchten :Manchmal schreibe ich sogar gerne eine
contains
Funktion, um diese Prüfung zu abstrahieren und das Verständnis der Vorgänge zu erleichtern. Was großartig ist, ist, dass dies sowohl für Arrays als auch für Strings funktioniert:Beginnend mit ES6 / ES2015 für Zeichenfolgen und vorgeschlagen für ES2016 für Arrays können Sie leichter feststellen, ob eine Quelle einen anderen Wert enthält:
quelle
contains
:var contains = (a, b) => !!~a.indexOf(b)
: PArray.prototype.includes
stattdessen.in
zu sehen, ob ein Objekt einen Schlüssel hat (z. B.'property' in obj
), oder Sie können auch die Werte eines Objekts mit durchlaufenObject.values(obj).forEach(value => {})
.Die
Array.indexOf()
Methode ersetzt die erste Instanz. Um jede Instanz zu erhalten, verwenden SieArray.map()
:Dadurch wird natürlich ein neues Array erstellt. Wenn Sie dies an Ort und Stelle tun möchten, verwenden Sie
Array.forEach()
:quelle
Array.indexOf()
wurde gleichzeitig mitmap()
und eingeführtforEach()
. Wenn Sie IE8 oder früher unterstützen und keine Unterlegscheibe zum Hinzufügen von Unterstützung verwenden, sollten Sie die Antwort von mellamokb verwenden .Meine vorgeschlagene Lösung wäre:
Die Spleißoperation entfernt 1 Element, beginnend an Position 1 im Array (dh
3452
), und ersetzt es durch das neue Element1010
.quelle
1
Element entfernt wird, obwohl der erste Parameter tatsächlich bedeutet, dass die Operation am Index stattfindet1
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Verwenden Sie indexOf, um ein Element zu finden.
quelle
Leicht mit einer
for
Schleife zu erreichen.quelle
Sie können eine beliebige Anzahl der Liste mithilfe von Indizes bearbeiten
beispielsweise :
quelle
Wenn Sie ein komplexes Objekt (oder sogar ein einfaches) verwenden und es6 verwenden können,
Array.prototype.findIndex
ist dies ein gutes Objekt . Für das Array des OP könnten sie Folgendes tun:Bei komplexeren Objekten scheint dies wirklich. Zum Beispiel,
quelle
Der Austausch kann in einer Zeile erfolgen:
Oder erstellen Sie eine Funktion zur Wiederverwendung:
quelle
ES6 Weg:
Wir wollen ersetzen
3452
durch1010
, Lösung:Sicherlich ist die Frage schon vor vielen Jahren und im Moment bevorzuge ich es einfach, eine unveränderliche Lösung zu verwenden, definitiv ist es großartig für
ReactJS
.Für den häufigen Gebrauch biete ich folgende Funktion an:
quelle
Erste Methode
Der beste Weg in nur einer Zeile, um ein Array-Element zu ersetzen oder zu aktualisieren
Z.B:
Zweite Methode
Eine andere einfache Möglichkeit, dieselbe Operation auszuführen, ist:
quelle
Am einfachsten ist es, einige Bibliotheken wie Unterstriche und Kartenmethoden zu verwenden.
quelle
replace
jetzt ..._.replace([1, 2, 3], 2, 3);
Die unveränderliche Möglichkeit, das Element in der Liste mithilfe von ES6-Spread-Operatoren und
.slice
-Methoden zu ersetzen .Stellen Sie sicher, dass dies funktioniert
quelle
Wenn Sie den Wert kennen, verwenden Sie,
Wenn Sie wissen möchten, dass ein Wert vorhanden ist oder nicht, verwenden Sie,
Wenn Sie den Ort (die Position) kennen, verwenden Sie direkt,
Wenn Sie nur wenige Elemente ersetzen möchten und nur die Startposition kennen, bedeutet dies:
Weitere Informationen zu .splice
quelle
Von hier aus können Sie einen bestimmten Wert aus dem Array löschen und basierend auf demselben Index einen Wert in das Array einfügen.
quelle
Wenn sich jemand dafür interessiert, wie ein Objekt aus seinem Index in einem Array ersetzt werden kann, finden Sie hier eine Lösung.
Suchen Sie den Index des Objekts anhand seiner ID:
Ersetzen Sie das Objekt mithilfe der Object.assign () -Methode:
quelle
Schreiben Sie Ihr Array zunächst folgendermaßen neu:
Greifen Sie als Nächstes über die Indexnummer auf das Element im Array zu. Die Formel zur Bestimmung der Indexnummer lautet:
n-1
Um das erste Element
(n=1)
im Array zu ersetzen , schreiben Sie:In Ihrem Beispiel befindet sich die Nummer
3452
an zweiter Stelle(n=2)
. Die Formel zur Bestimmung der Indexnummer lautet also2-1 = 1
. Schreiben Sie also den folgenden Code, den Sie ersetzen3452
möchten1010
:quelle
Hier ist die grundlegende Antwort, die in eine wiederverwendbare Funktion umgewandelt wurde:
quelle
Ich habe dieses Problem gelöst, indem ich for-Schleifen verwendet und das ursprüngliche Array durchlaufen habe und die Positionen der übereinstimmenden Bereiche zu einem anderen Array hinzugefügt habe. Dann habe ich dieses Array durchlaufen und es im ursprünglichen Array geändert und dann zurückgegeben. Ich habe eine Pfeilfunktion verwendet, aber eine reguläre Funktion würde auch funktionieren.
quelle
quelle
Der einfachste Weg ist dies.
quelle
replaceWhat = 523, replaceWith = 999999
liefert keine korrekten ErgebnisseHier ist ein Einzeiler. Es wird davon ausgegangen, dass sich das Element im Array befindet.
quelle
Wenn Sie einen einfachen Zucker-Sintax-Oneliner möchten, können Sie einfach:
Mögen:
Wenn Sie keine ID haben, können Sie das Element wie folgt anordnen:
quelle
Die Antwort von @ gilly3 ist großartig.
So erweitern Sie dies für ein Array von Objekten
Ich bevorzuge die folgende Methode, um den neuen aktualisierten Datensatz in meinem Datensatzarray zu aktualisieren, wenn ich Daten vom Server erhalte. Es hält die Bestellung intakt und ganz einfach einen Liner.
users = users.map(u => u.id !== editedUser.id ? u : editedUser);
quelle