1271 Stimmen

Wie entferne ich ein Element aus einem Array nach Wert?

Gibt es eine Methode, um ein Element aus einem JavaScript-Array zu entfernen?

Angenommen, wir haben ein Array:

var ary = ['three', 'seven', 'eleven'];

Ich möchte etwas Ähnliches tun wie:

removeItem('seven', ary);

Ich habe splice() untersucht, aber das entfernt nur anhand der Positionsnummer, während ich etwas brauche, um ein Element anhand seines Wertes zu entfernen.

15voto

Subhojit Mondal Punkte 455

Wenn Sie einen Wert entfernen müssen, der mehrmals im Array vorhanden ist (z. B. [1,2,2,2, 4, 5,6]).

function removeFrmArr(array, element) {
  return array.filter(e => e !== element);
};
var exampleArray = [1,2,3,4,5];
removeFrmArr(exampleArray, 3);
// Wert zurückgeben wie folgt
//[1, 2, 4, 5]

Sie können splice verwenden, um ein einzelnes Element aus dem Array zu entfernen, aber splice kann nicht mehrere ähnliche Elemente aus dem Array entfernen.

function singleArrayRemove(array, value){
  var index = array.indexOf(value);
  if (index > -1) array.splice(index, 1);
  return array;
}
var exampleArray = [1,2,3,4,5,5];
singleArrayRemove(exampleArray, 5);
// Wert zurückgeben wie folgt
//[1, 2, 3, 4, 5]

14voto

Shakespeare Punkte 1286

Weil es keine schöne gibt, hier eine einfache und wiederverwendbare ES6-Funktion.

const removeArrayItem = (arr, itemToRemove) => {
  return arr.filter(item => item !== itemToRemove)
}

Verwendung:

const items = ['orange', 'purple', 'orange', 'brown', 'red', 'orange']
removeArrayItem(items, 'orange')

7voto

Jason Punkte 2139

Alle übereinstimmenden Elemente aus dem Array entfernen (anstatt nur das erste, wie es hier die häufigste Antwort zu sein scheint):

while ($.inArray(item, array) > -1) {
    array.splice( $.inArray(item, array), 1 );
}

Ich habe jQuery für die harte Arbeit verwendet, aber Sie bekommen die Idee, wenn Sie nativ gehen wollen.

7voto

Eugene Lyzo Punkte 99

In allen einzigartigen Werten kannst du:

a = new Set([1,2,3,4,5]) // a = Set(5) {1, 2, 3, 4, 5}
a.delete(3) // a = Set(5) {1, 2, 4, 5} 
[...a] // [1, 2, 4, 5]

6voto

mtizziani Punkte 828

Eine sehr saubere Lösung, die in allen Browsern funktioniert und ohne Framework auskommt, ist es, ein neues Array zuzuweisen und es einfach zurückzugeben, ohne das Element zu löschen, das Sie entfernen möchten:

/**
 * @param {Array} array das originale Array mit allen Elementen
 * @param {any} item das Element, das Sie entfernen möchten
 * @returns {Array} ein neues Array ohne das Element
 */
var removeItemFromArray = function(array, item){
  /* weise ein leeres Array zu */
  var tmp = [];
  /* Schleife über alle Array-Elemente */
  for(var index in array){
    if(array[index] !== item){
      /* füge dem temporären Array hinzu, wenn es nicht wie das Element ist */
      tmp.push(array[index]);
    }
  }
  /* gib das temporäre Array zurück */
  return tmp;
}

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