Jedes Element dieses Arrays ist eine Zahl:
var items = Array(523,3452,334,31, ...5346);
Wie kann man einen Gegenstand durch einen neuen ersetzen?
Wir wollen zum Beispiel Folgendes ersetzen 3452
con 1010
Wie würden wir das tun?
Jedes Element dieses Arrays ist eine Zahl:
var items = Array(523,3452,334,31, ...5346);
Wie kann man einen Gegenstand durch einen neuen ersetzen?
Wir wollen zum Beispiel Folgendes ersetzen 3452
con 1010
Wie würden wir das tun?
var index = items.indexOf(3452);
if (index !== -1) {
items[index] = 1010;
}
Es wird auch empfohlen, die Konstruktormethode nicht zur Initialisierung der Arrays zu verwenden. Verwenden Sie stattdessen die Literal-Syntax:
var items = [523, 3452, 334, 31, 5346];
Sie können auch die ~
Operator, wenn Sie sich für kurzes JavaScript interessieren und die -1
Vergleich:
var index = items.indexOf(3452);
if (~index) {
items[index] = 1010;
}
Manchmal schreibe ich auch gerne einen contains
Funktion, um diese Prüfung zu abstrahieren und es einfacher zu machen, zu verstehen, was vor sich geht. Das Tolle daran ist, dass dies sowohl bei Arrays als auch bei Strings funktioniert:
var contains = function (haystack, needle) {
return !!~haystack.indexOf(needle);
};
// can be used like so now:
if (contains(items, 3452)) {
// do something else...
}
Beginnend mit ES6/ES2015 für Strings und vorgeschlagen für ES2016 für Arrays, können Sie leichter feststellen, ob eine Quelle einen anderen Wert enthält:
if (haystack.includes(needle)) {
// do your thing
}
El Array.indexOf()
Methode wird die erste Instanz ersetzen. Um jede Instanz zu erhalten, verwenden Sie Array.map()
:
a = a.map(function(item) { return item == 3452 ? 1010 : item; });
Dadurch wird natürlich ein neues Array erstellt. Wenn Sie es an Ort und Stelle tun wollen, verwenden Sie Array.forEach()
:
a.forEach(function(item, i) { if (item == 3452) a[i] = 1010; });
Die Antwort von @gilly3 ist großartig.
Ersetzen eines Objekts in einem Array, wobei die Reihenfolge des Arrays unverändert bleibt
Ich bevorzuge die folgende Methode, um den neuen aktualisierten Datensatz in meinem Array von Datensätzen zu aktualisieren, wenn ich Daten vom Server erhalte. Es hält die Reihenfolge intakt und ganz geradlinig ein Liner.
users = users.map(u => u.id !== editedUser.id ? u : editedUser);
var users = [
{id: 1, firstname: 'John', lastname: 'Ken'},
{id: 2, firstname: 'Robin', lastname: 'Hood'},
{id: 3, firstname: 'William', lastname: 'Cook'}
];
var editedUser = {id: 2, firstname: 'Michael', lastname: 'Angelo'};
users = users.map(u => u.id !== editedUser.id ? u : editedUser);
console.log('users -> ', users);
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.