2013-07-15 12 views
9

Angenommen, ich habe ein Array von Objekten mit dem Namen und eine bestimmte Funktion gibt einen Verweis für ein bestimmtes Element innerhalb dieses Arrays zurück; so etwas wie dieses:Objekt aus dem Array mit nur der Objektverweis entfernen

MyArray = [Object1, Object2, ..., Objectn]; 

function DoWork() { 

    var TheObject = GetTheObject(SomeParamter); 
} 

An diesem Punkt TheObject Punkte zu einem bestimmten Element in der Anordnung. Angenommen, ich möchte dieses Element aus entfernen, ist das möglich, ohne das Array erneut durchlaufen zu müssen, um den Index des Elements zu erhalten?

Ich bin auf der Suche nach etwas wie Spleiß, die mit dem Verweis auf das Element und nicht den Index des Elements arbeiten würde.

+0

möglich duplizieren: http://stackoverflow.com/questions/3396088/how-do-i-remove-an-object-from-an-array-with-javascript – acudars

+1

Schreiben 'TheObject = null' wird nicht löschen Objekt aus dem Array. Du hast es falsch gemacht. – Jon

+2

arr.splice (arr.IndexOf (obj), 1); – dandavis

Antwort

21

Verwenden Sie einfach Array.prototype.indexOf:

let index = MyArray.indexOf(TheObject); 
if(index !== -1) { 
    MyArray.splice(index, 1); 
} 

Denken Sie daran, dass, wenn IE Targeting < 9 benötigen Sie einen polyfill für indexOf einzuführen; Sie können one in der MDN-Seite finden.

+1

woher kam entfernt? – dandavis

+0

@dandavis: Mein Problem scheint es. Ersetzt. – Jon

+0

funktioniert indexOf in IE8? – frenchie

Verwandte Themen