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.

55voto

gadlol Punkte 1233

Überprüfen Sie auf diese Weise:

for(var i in array){
    if(array[i]=='seven'){
        array.splice(i,1);
        break;
    }
}

und in einer Funktion:

function removeItem(array, item){
    for(var i in array){
        if(array[i]==item){
            array.splice(i,1);
            break;
        }
    }
}

removeItem(array, 'seven');

47voto

Jackkobec Punkte 4677

Die einfachste Lösung lautet:

array - Array zum Entfernen eines bestimmten Elementwertes; valueForRemove - zu entfernendes Element;

array.filter(arrayItem => !array.includes(valueForRemove));

Einfacher:

array.filter(arrayItem => arrayItem !== valueForRemove);

Nicht schön, aber funktioniert:

array.filter(arrayItem => array.indexOf(arrayItem) != array.indexOf(valueForRemove))

Nicht schön, aber funktioniert:

while(array.indexOf(valueForRemove) !== -1) {
  array.splice(array.indexOf(valueForRemove), 1)
}

P.S. Die filter() Methode erstellt ein neues Array mit allen Elementen, die den Test bestehen, der durch die bereitgestellte Funktion implementiert wurde. Siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

44voto

Chiaro Punkte 1359

Sie können Ihre eigene Methode erstellen, die das Array und den Wert, den Sie entfernen möchten, durchläuft:

function removeItem(arr, item){
 return arr.filter(f => f !== item)
}

Dann können Sie dies aufrufen mit:

ary = removeItem(ary, 'seven');

39voto

Matee Gojra Punkte 4048

Methode 1

var ary = ['three', 'seven', 'eleven'];
var index = ary.indexOf('seven'); // gibt den Index zurück, wenn der Wert gefunden wurde, sonst -1

if (index > -1) { // Falls gefunden
  ary.splice(index, 1);
}

Methode 2

Einzeilige Lösung

var ary = ['three', 'seven', 'eleven'];
filteredArr = ary.filter(function(v) { return v !== 'seven' })

// Oder mit ECMA6:
filteredArr = ary.filter(v => v !== 'seven')

37voto

CorayThan Punkte 15917

Hier ist eine Version, die die inArray-Funktion von jQuery verwendet:

var index = $.inArray(item, array);
if (index != -1) {
    array.splice(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