Ich habe ein JavaScript-Objekt wie dieses:
id="1";
name = "serdar";
und ich habe ein Array, das viele Objekte von oben enthält. Wie kann ich ein Objekt wie folgt aus diesem Array entfernen:
obj[1].remove();
javascript
arrays
object
Mavera
quelle
quelle
Wenn Sie Zugriff auf ES2015-Funktionen haben und nach einem funktionaleren Ansatz suchen, würde ich Folgendes wählen:
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' } // [
Achtung, es
filter()
ist nicht mutierend, sodass Sie ein neues Array zurückerhalten.Weitere Informationen finden Sie in den Mozilla Developer Network-Hinweisen zu Filter .
quelle
Sie können entweder die
splice()
Methode oder dendelete
Operator verwenden.Der Hauptunterschied besteht darin, dass beim Löschen eines Array-Elements mit dem
delete
Operator die Länge des Arrays nicht beeinflusst wird, selbst wenn Sie das letzte Element des Arrays löschen. Andererseitssplice()
verschiebt das Verfahren alle Elemente so, dass keine Löcher an der Stelle des gelöschten Elements verbleiben.Beispiel mit dem
delete
Operator: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"]
quelle
Ich benutze das ziemlich oft, also habe ich einen kleinen Prototyp erstellt. Sucht einfach nach dem Gegenstand und zieht ihn heraus, wenn eine Übereinstimmung vorliegt.
//Prototype to remove object from array, removes first //matching object only Array.prototype.remove = function (v) { if (this.indexOf(v) != -1) { this.splice(this.indexOf(v), 1); return true; } return false; }
Kann wie folgt aufgerufen werden:
var arr = [12, 34, 56]; arr.remove(34);
Das Ergebnis wäre [12, 56]
Hat eine boolesche Rückgabe, wenn das Entfernen erfolgreich war, false, wenn das Element nicht vorhanden war.
quelle
Wenn Sie den Index kennen, den das Objekt innerhalb des Arrays hat, können Sie splice () verwenden, wie andere erwähnt haben, dh:
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
quelle
Sauberster und schnellster Weg (ES6)
const apps = [ {id:1, name:'Jon'}, {id:2, name:'Dave'}, {id:3, name:'Joe'} ] //remove item with id=2 const itemToBeRemoved = {id:2, name:'Dave'} apps.splice(apps.findIndex(a => a.id === itemToBeRemoved.id) , 1) //print result console.log(apps)
quelle
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 findIndex-Methode in Internet Explorer nicht unterstützt wird, Polyfill jedoch von hier aus verwendet werden kann
quelle
//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) } }
quelle
Verwenden Sie die Spleißmethode .
(Zumindest nehme ich an, dass dies die Antwort ist. Sie sagen, Sie haben ein Objekt , aber der von Ihnen angegebene Code erstellt nur zwei Variablen, und es gibt keine Anzeichen dafür, wie das Array erstellt wird.)
quelle
Verwenden Sie das Schlüsselwort delete.
delete obj[1];
BEARBEITEN: Siehe: Löschen von Array-Elementen in JavaScript - Löschen gegen Spleißen löschen definiert den Versatz, entfernt den Eintrag jedoch nicht vollständig. Splice wäre richtig, wie David sagte.
quelle
delete
wird den Offset undefinieren, aber nicht vollständig entfernen" - dies ist nicht ganz korrekt, dadelete
das Element vollständig entfernt wird, wie imif (3 in trees)
Test in meiner Antwort gezeigt. Das einzige ist, dass die anderen Elemente nicht verschoben werden, um das Loch zu füllen, sodass die Länge nicht beeinflusst wird. Wenn Sie also das Array anzeigen, werden Sie dort ankommen,undefined
wo sich das Loch befindet ...delete
ist jedoch nicht dasselbe wie das Setzen eines Elements aufundefined
. Dies wird auch hier erklärt: developer.mozilla.org/en/Core_JavaScript_1.5_Reference/…delete obj[1];
Beachten Sie, dass dadurch die Array-Indizes nicht geändert werden. Alle Array-Mitglieder, die Sie löschen, bleiben als "Slots" erhalten
undefined
.quelle
// Index des Objekts mit der ID: 37 abrufen
// Objekt entfernen
quelle
Wenn wir ein Array von Objekten haben, möchten wir ein Objekt nur mit der Eigenschaft id entfernen
var apps = [ {id:34,name:'My App',another:'thing'}, {id:37,name:'My New App',another:'things' }];
Holen Sie sich den Index des Objekts mit der ID: 37
var removeIndex = apps.map(function(item) { return item.id; }).indexOf(37); // remove object apps.splice(removeIndex, 1);
quelle
Wenn es das letzte Element im Array ist, können Sie dies tun
obj.pop()
quelle
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)
quelle