409 Stimmen

Wie entfernt man ein Element aus einem Array in JavaScript?

var arr = [1,2,3,5,6];

Entfernen Sie das erste Element

Ich möchte das erste Element des Arrays entfernen, so dass es zu:

var arr = [2,3,5,6];

Entfernen Sie das zweite Element

Um diese Frage zu erweitern, was, wenn ich das zweite Element des Arrays entfernen möchte, so dass es wird:

var arr = [1,3,5,6];

17voto

Anurag Punkte 136648

Habe einen kleinen Artikel über das Einfügen und Löschen von Elementen an beliebigen Positionen in Javascript-Arrays geschrieben.

Hier ist das kleine Snippet, um ein Element von einer beliebigen Position zu entfernen. Dies erweitert die Klasse Array in Javascript und fügt die Methode remove(index) hinzu.

// Remove element at the given index
Array.prototype.remove = function(index) {
    this.splice(index, 1);
}

Um also das erste Element in Ihrem Beispiel zu entfernen, rufen Sie arr.remove() auf:

var arr = [1,2,3,5,6];
arr.remove(0);

Um den zweiten Punkt zu entfernen,

arr.remove(1);

Hier ist eine kleine Artikel mit Einfüge- und Löschmethoden für die Klasse Array.

Im Grunde unterscheidet sich dies nicht von den anderen Antworten, die Splice verwenden, aber der Name splice ist nicht intuitiv, und wenn Sie diesen Aufruf überall in Ihrer Anwendung haben, macht es den Code nur schwieriger zu lesen.

12voto

Martin Choraine Punkte 2101

Andere Antworten sind großartig, ich wollte nur eine alternative Lösung hinzufügen mit ES6 Array-Funktion : filter .

filter() erstellt ein neues Array mit Elementen, die unter ein bestimmtes Kriterium fallen, aus einem bestehenden Array.

Auf diese Weise können Sie problemlos Elemente entfernen, die die Kriterien nicht erfüllen. Der Vorteil dieser Funktion ist, dass Sie sie für komplexe Arrays verwenden können, nicht nur für Strings und Zahlen.

Einige Beispiele:

Erstes Element entfernen :

// Not very useful but it works
function removeFirst(element, index) {
  return index > 0;
}
var arr = [1,2,3,5,6].filter(removeFirst); // [2,3,4,5,6]

Zweites Element entfernen :

function removeSecond(element, index) {
  return index != 1;
}
var arr = [1,2,3,5,6].filter(removeSecond); // [1,3,4,5,6]

Ungerades Element entfernen :

function removeOdd(element, index) {
  return !(element % 2);
}
var arr = [1,2,3,5,6].filter(removeOdd); [2,4,6]

Nicht vorrätige Artikel entfernen

const inventory = [
  {name: 'Apple', qty: 2},
  {name: 'Banana', qty: 0},
  {name: 'Orange', qty: 5}
];

const res = inventory.find( product => product.qty > 0);

7voto

Keet Sugathadasa Punkte 7859

Es gibt mehrere Möglichkeiten, ein Element aus einem Array zu entfernen. Ich möchte im Folgenden die am häufigsten verwendeten Optionen aufzeigen. Ich schreibe diese Antwort, weil ich keinen vernünftigen Grund dafür finden konnte, was von all diesen Optionen zu verwenden ist. Die Antwort auf die Frage ist Option 3 ( Splice() ).

1) SHIFT() - Entfernen des ersten Elements aus dem ursprünglichen Array und Rückgabe des ersten Elements

Siehe Referenz für Array.prototype.shift() . Verwenden Sie diese Option nur, wenn Sie das erste Element entfernen möchten, und nur, wenn Sie das ursprüngliche Array nicht verändern wollen.

const array1 = [1, 2, 3];

const firstElement = array1.shift();

console.log(array1);
// expected output: Array [2, 3]

console.log(firstElement);
// expected output: 1

2) SLICE() - Gibt eine Kopie des Arrays zurück, die durch einen Anfangsindex und einen Endindex getrennt ist

Siehe Referenz für Array.prototype.slice() . Sie können ein bestimmtes Element nicht aus dieser Option entfernen. Sie können nur einen Teil des bestehenden Arrays nehmen und einen kontinuierlichen Teil des Arrays erhalten. Es ist, als würde man das Array von den angegebenen Indizes aus zerschneiden. Das ursprüngliche Array bleibt davon unberührt.

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]

3) SPLICE() - Inhalt eines Arrays durch Entfernen oder Ersetzen von Elementen an bestimmten Indizes ändern.

Siehe Referenz für Array.prototype.splice() . Die Methode splice() ändert den Inhalt eines Arrays durch Entfernen oder Ersetzen bestehender Elemente und/oder Hinzufügen neuer Elemente an ihrer Stelle. Gibt das aktualisierte Array zurück. Das ursprüngliche Array wird aktualisiert.

const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]

months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]

3voto

Brendan Punkte 1446

Sie können die ES6-Funktion der Destrukturierungszuweisung mit einem Rest-Operator verwenden. Ein Komma gibt an, wo das Element entfernt werden soll, und der Rest-Operator (...arr) liefert die verbleibenden Elemente des Arrays.

const source = [1,2,3,5,6];

function removeFirst(list) {
   var  [, ...arr] = list;
   return arr;
}
const arr = removeFirst(source);
console.log(arr); // [2, 3, 5, 6]
console.log(source); // [1, 2, 3, 5, 6]

2voto

Adam Pietrasiak Punkte 11497

Typescript-Lösung, bei der das ursprüngliche Array nicht verändert wird

function removeElementAtIndex<T>(input: T[], index: number) {
  return input.slice(0, index).concat(input.slice(index + 1));
}

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