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

76voto

nnnnnn Punkte 142888

Ihr "Array" ist in der gezeigten Form eine ungültige JavaScript-Syntax. Geschwungene Klammern {} sind für Objekte mit Eigenschaftsnamen/Wertpaaren, aber eckige Klammern [] sind für Arrays - etwa so:

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

In diesem Fall können Sie die .splice() método um ein Element zu entfernen. Um das erste Element (Index 0) zu entfernen, sagen Sie:

someArray.splice(0,1);

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

Wenn Sie den Index nicht kennen, aber das Array durchsuchen möchten, um das Element mit dem Namen "Kristian" zu finden, das Sie entfernen möchten, können Sie dies tun:

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

EDIT: Ich habe gerade bemerkt, dass Ihre Frage mit "jQuery" getaggt ist, also könnten Sie versuchen, die $.grep() método :

someArray = $.grep(someArray,
                   function(o,i) { return o.name === "Kristian"; },
                   true);

61voto

daCoda Punkte 3011

Sie können array.filter() verwenden.

z.B..

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

        someArray = someArray.filter(function(returnableObjects){
               return returnableObjects.name !== 'Kristian';
        });

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

Pfeil-Funktionen:

someArray = someArray.filter(x => x.name !== 'Kristian')

24voto

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

Wir erhalten den Index des Objekts, dessen Name den Wert "Kristian" hat.

const index = someArray.findIndex(key => key.name === "Kristian");
console.log(index); // 0

Mit der Funktion splice entfernen wir das Objekt, das den Eigenschaftswert name "Kristian" hat.

someArray.splice(index,1);
console.log(someArray); // [{name:"John", lines:"1,19,26,96"}]

21voto

ggmendez Punkte 583

Das ist eine Funktion, die bei mir funktioniert:

function removeFromArray(array, value) {
    var idx = array.indexOf(value);
    if (idx !== -1) {
        array.splice(idx, 1);
    }
    return array;
}

20voto

Bishoy Hanna Punkte 11268

Ich habe eine dynamische Funktion nimmt die Objekte Array, Schlüssel und Wert und gibt das gleiche Array nach dem Entfernen des gewünschten Objekts:

function removeFunction (myObjects,prop,valu)
        {
             return myObjects.filter(function (val) {
              return val[prop] !== valu;
          });

        }

Vollständiges Beispiel: DEMO

var obj = {
            "results": [
              {
                  "id": "460",
                  "name": "Widget 1",
                  "loc": "Shed"
              }, {
                  "id": "461",
                  "name": "Widget 2",
                  "loc": "Kitchen"
              }, {
                  "id": "462",
                  "name": "Widget 3",
                  "loc": "bath"
              }
            ]
            };

        function removeFunction (myObjects,prop,valu)
        {
             return myObjects.filter(function (val) {
              return val[prop] !== valu;
          });

        }

console.log(removeFunction(obj.results,"id","460"));

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