793 Stimmen

Objekt aus Array entfernen mit JavaScript

Wie kann ich ein Objekt aus einem Array entfernen? Ich möchte das Objekt entfernen, das den Namen Kristian von someArray . Zum Beispiel:

someArray = [{name:"Kristian", lines:"2,5,10"},
             {name:"John", lines:"1,19,26,96"}];

Ich möchte etwas erreichen:

someArray = [{name:"John", lines:"1,19,26,96"}];

3voto

Obaid Punkte 2505

Wenn Sie alle Vorkommen eines bestimmten Objekts (auf der Grundlage einer Bedingung) entfernen möchten, verwenden Sie die JavaScript-Splice-Methode innerhalb einer for-Schleife.

Da sich das Entfernen eines Objekts auf die Array-Länge auswirken würde, muss der Zähler um einen Schritt verringert werden, damit die Längenprüfung intakt bleibt.

var objArr=[{Name:"Alex", Age:62},
  {Name:"Robert", Age:18},
  {Name:"Prince", Age:28},
  {Name:"Cesar", Age:38},
  {Name:"Sam", Age:42},
  {Name:"David", Age:52}
];

for(var i = 0;i < objArr.length; i ++)
{
  if(objArr[i].Age > 20)
  {
    objArr.splice(i, 1);
    i--;  //re-adjust the counter.
  }
}

Das obige Codeschnipsel entfernt alle Objekte mit einem Alter von mehr als 20 Jahren.

3voto

JarmoP Punkte 181

Diese Antwort

for (var i =0; i < someArray.length; i++)
   if (someArray[i].name === "Kristian") {
      someArray.splice(i,1);
   }

funktioniert nicht für mehrere Datensätze, die die Bedingung erfüllen. Bei zwei solchen aufeinanderfolgenden Datensätzen wird nur der erste entfernt und der andere übersprungen. Sie müssen verwenden:

for (var i = someArray.length - 1; i>= 0; i--)
   ...

stattdessen.

3voto

umutyerebakmaz Punkte 670

Ich denke, die Antworten sind sehr verzweigt und verstrickt.

Sie können den folgenden Pfad verwenden, um ein Array-Objekt zu entfernen, das dem im modernen JavaScript-Jargon angegebenen Objekt entspricht.

coordinates = [
    { lat: 36.779098444109145, lng: 34.57202827508546 },
    { lat: 36.778754712956506, lng: 34.56898128564454 },
    { lat: 36.777414146732426, lng: 34.57179224069215 }
];

coordinate = { lat: 36.779098444109145, lng: 34.57202827508546 };

removeCoordinate(coordinate: Coordinate): Coordinate {
    const found = this.coordinates.find((coordinate) => coordinate == coordinate);
    if (found) {
      this.coordinates.splice(found, 1);
    }
    return coordinate;
  }

2voto

Apolo Reader Punkte 59

Verwenden Sie die Funktion splice() von Javascript.

Das kann helfen: http://www.w3schools.com/jsref/jsref_splice.asp

2voto

Artur Grigio Punkte 4659

Sie können auch Folgendes verwenden some :

someArray = [{name:"Kristian", lines:"2,5,10"},
             {name:"John", lines:"1,19,26,96"}];

someArray.some(item => { 
    if(item.name === "Kristian") // Case sensitive, will only remove first instance
        someArray.splice(someArray.indexOf(item),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