javascript - löschen - js remove from array by value




Wie entferne ich ein Objekt aus einem Array mit JavaScript? (9)

var apps = [{id: 34, Name: 'Meine App', ein anderes: 'Ding'}, {ID: 37, Name: 'Meine neue App', ein anderes: 'Dinge'}];

// Erhalte den Index des Objekts mit der ID: 37

var removeIndex = apps.map (Funktion (Element) {return item.id;}). indexOf (37);

// Objekt entfernen

apps.splice (removeIndex, 1);

Ich habe ein JavaScript-Objekt wie folgt:

id="1";
name = "serdar";

und ich habe ein Array, das viele Objekte von oben enthält. Wie kann ich ein Objekt aus diesem Array entfernen, wie zum Beispiel:

obj[1].remove();

Gut splice funktioniert:

var arr = [{id:1,name:'serdar'}];
arr.splice(0,1);
// []

Verwenden Sie den delete NICHT für Arrays.

Aber vielleicht willst du so etwas?

var removeByAttr = function(arr, attr, value){
    var i = arr.length;
    while(i--){
       if( arr[i] 
           && arr[i].hasOwnProperty(attr) 
           && (arguments.length > 2 && arr[i][attr] === value ) ){ 

           arr.splice(i,1);

       }
    }
    return arr;
}

Nur ein Beispiel unten.

var arr = [{id:1,name:'serdar'}, {id:2,name:'alfalfa'},{id:3,name:'joe'}];
removeByAttr(arr, 'id', 1);   
// [{id:2,name:'alfalfa'}, {id:3,name:'joe'}]

removeByAttr(arr, 'name', 'joe');
// [{id:2,name:'alfalfa'}]

Sie können entweder die splice() Methode oder den delete .

Der Hauptunterschied besteht darin, dass beim Löschen eines Array-Elements mit dem delete die Länge des Arrays nicht beeinflusst wird, selbst wenn Sie das letzte Element des Arrays löschen. Auf der anderen Seite verschiebt die splice() Methode alle Elemente so, dass keine Löcher an der Stelle des gelöschten Elements verbleiben.

Beispiel mit dem delete :

var trees = ["redwood", "bay", "cedar", "oak", "maple"];  
delete trees[3];  
if (3 in trees) {  
   // this does not get executed  
}
console.log(trees.length);  //  5
console.log(trees);         //  ["redwood", "bay", "cedar", undefined, "maple"]

Beispiel mit der splice() Methode:

var trees = ["redwood", "bay", "cedar", "oak", "maple"];  
trees.splice(3, 1);
console.log(trees.length);  //  4
console.log(trees);         //  ["redwood", "bay", "cedar", "maple"]


Wenn Sie Zugriff auf ES2015-Funktionen haben und nach einem funktionelleren Ansatz suchen, würde ich mit etwas wie dem folgenden gehen:

const people = [
  { id: 1, name: 'serdar' },
  { id: 5, name: 'alex' },
  { id: 300, name: 'brittany' }
];

const idToRemove = 5;

const filteredPeople = people.filter((item) => item.id !== idToRemove);

// [
//   { id: 1, name: 'serdar' },
//   { id: 300, name: 'brittany' }
// [

Pass auf, filter() mutiert nicht, also bekommst du ein neues Array zurück.

Weitere Informationen finden Sie in den Mozilla Developer Network-Hinweisen zu Filter .


Wenn Sie den Index kennen, den das Objekt innerhalb des Arrays hat, können Sie splice () verwenden, wie andere bereits erwähnt haben:

var removedObject = myArray.splice(index,1);
removedObject = null;

Wenn Sie den Index nicht kennen, müssen Sie das Array danach durchsuchen, dh:

for (var n = 0 ; n < myArray.length ; n++) {
    if (myArray[n].name == 'serdar') {
      var removedObject = myArray.splice(n,1);
      removedObject = null;
      break;
    }
}

Marcelo


var arr = [{id:1,name:'serdar'}, {id:2,name:'alfalfa'},{id:3,name:'joe'}];
var ind = arr.findIndex(function(element){
   return element.id===2;
})
if(ind!==-1){
arr.splice(ind, 1)
}
console.log (arr)

Bitte beachten Sie, dass die Methode findIndex in Internet Explorer nicht unterstützt wird, aber von here aus polyfill verwendet here


  //K.I.S.S. method
  //(the setup/comments is/are longer than the code)
  //cards is a two dimensional array object
  //  has an array object with 4 elements at each first dimensional index
  //var cards = new Array()
  //cards[cards.length] = new Array(name, colors, cost, type)
  //Can be constructed with Associated arrays, modify code as needed.
  //my test array has 60 'cards' in it
  //  15 'cards' repeated 4 times each
  //  groups were not sorted prior to execution
  //  (I had 4 groups starting with 'U' before the first 'A')
  //Should work with any dimensionality as long as first
  //index controls sort order

  //sort and remove duplicates
  //Algorithm:
  //  While same name side by side, remove higher entry;
  //  assumes 'cards' with same name have same other data
  //  (otherwise use cards[i-1] === cards[i] to compare array objects).
  //Tested on IE9 and FireFox (multiple version #s from 31 up).
  //Also tested by importing array data from 5MB text file.
  //Quick execution
  cards.sort()
  for (i=1; i<cards.length-1; i++){
    while (cards[i-1][0] == cards[i][0]){
       cards.splice(i,1)
    }
  }

var user = [
  { id: 1, name: 'Siddhu' },
  { id: 2, name: 'Siddhartha' },
  { id: 3, name: 'Tiwary' }
];

var recToRemove={ id: 1, name: 'Siddhu' };

user.splice(user.indexOf(recToRemove),1)




object