603 Stimmen

Wie kann man ein Element in einem Array ersetzen?

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?

16voto

bmaggi Punkte 2643

Ein funktionaler Ansatz zum Ersetzen eines Elements eines Arrays in Javascript:

const replace = (array, index, ...items) => [...array.slice(0, index), ...items, ...array.slice(index + 1)];

8voto

Purkhalo Alex Punkte 2617

Die unveränderliche Art, das Element in der Liste mit ES6-Spread-Operatoren und .slice Methode.

const arr = ['fir', 'next', 'third'], item = 'next'

const nextArr = [
  ...arr.slice(0, arr.indexOf(item)), 
  'second',
  ...arr.slice(arr.indexOf(item) + 1)
]

Überprüfen Sie, ob das funktioniert

console.log(arr)     // [ 'fir', 'next', 'third' ]
console.log(nextArr) // ['fir', 'second', 'third']

7voto

Artee Punkte 759

Die Ersetzung kann in einer Zeile erfolgen:

var items = Array(523, 3452, 334, 31, 5346);

items[items.map((e, i) => [i, e]).filter(e => e[1] == 3452)[0][0]] = 1010

console.log(items);

Oder erstellen Sie eine Funktion zur Wiederverwendung:

Array.prototype.replace = function(t, v) {
    if (this.indexOf(t)!= -1)
        this[this.map((e, i) => [i, e]).filter(e => e[1] == t)[0][0]] = v;
  };

//Check
var items = Array(523, 3452, 334, 31, 5346);
items.replace(3452, 1010);
console.log(items);

4voto

KarSho Punkte 5744
var items = Array(523,3452,334,31,5346);

Wenn Sie den Wert kennen, verwenden Sie ihn,

items[items.indexOf(334)] = 1010;

Wenn Sie wissen wollen, ob ein Wert vorhanden ist oder nicht, dann verwenden Sie,

var point = items.indexOf(334);

if (point !== -1) {
    items[point] = 1010;
}

Wenn Sie den Ort (die Position) kennen, verwenden Sie ihn direkt,

items[--position] = 1010;

Wenn Sie nur wenige Elemente ersetzen wollen, und Sie wissen, dass nur die Ausgangsposition zählt,

items.splice(2, 1, 1010, 1220);

für mehr über .splice

3voto

mrded Punkte 3874

Der einfachste Weg ist die Verwendung von Bibliotheken wie underscorejs und Kartenmethode.

var items = Array(523,3452,334,31,...5346);

_.map(items, function(num) {
  return (num == 3452) ? 1010 : num; 
});
=> [523, 1010, 334, 31, ...5346]

CodeJaeger.com

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.

Powered by:

X