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"}];

2voto

Simon Scarfe Punkte 8980

Es scheint einen Fehler in Ihrer Array-Syntax zu geben, so dass ich annehme, dass Sie ein Array und nicht ein Objekt meinen, Array.splice ist hier Ihr Freund:

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

2voto

Matthias S Punkte 205

Das verwende ich.

Array.prototype.delete = function(pos){
    this[pos] = undefined;
    var len = this.length - 1;
    for(var a = pos;a < this.length - 1;a++){
      this[a] = this[a+1];
    }
    this.pop();
  }

Dann ist es so einfach wie zu sagen

var myArray = [1,2,3,4,5,6,7,8,9];
myArray.delete(3);

Ersetzen Sie eine beliebige Zahl anstelle von drei. Danach sollte die erwartete Ausgabe lauten:

console.log(myArray); //Expected output 1,2,3,5,6,7,8,9

1voto

titleLogin Punkte 489

Können Sie wie folgt filtern:

const someArray = [{
    name: "Kristian",
    lines: "2,5,10"
  },
  {
    name: "John",
    lines: "1,19,26,96"
  }
];
var filtered = someArray.filter((el) => el.name != "Kristian");
console.log(filtered)

1voto

Legends Punkte 18859

Gibt nur Objekte aus dem Array zurück, deren Eigenschaft name ist nicht "Kristian"

var noKristianArray = $.grep(someArray, function (el) { return el.name!= "Kristian"; });

Demo:

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

var noKristianArray = $.grep(someArray, function (el) { return el.name!= "Kristian"; });

console.log(noKristianArray);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1voto

Maksood Punkte 1110

Splice(i, 1), wobei i der inkrementelle Index des Arrays ist, entfernt das Objekt. Aber denken Sie daran, dass splice auch die Länge des Arrays zurücksetzt, also achten Sie auf 'undefined'. Wenn Sie in Ihrem Beispiel "Kristian" entfernen, dann wird bei der nächsten Ausführung innerhalb der Schleife i 2 sein, aber someArray wird die Länge 1 haben. Eine Lösung für dieses Problem, wenn auch nicht elegant, ist ein separater Zähler, der den Index des zu entfernenden Elements verfolgt.

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