2013-07-15 148 views
9

假設我有一個名爲的對象數組,並且某個函數返回該數組中的特定元素的引用;是這樣的:只用對象的引用從數組中刪除對象

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

function DoWork() { 

    var TheObject = GetTheObject(SomeParamter); 
} 

此時,TheObject點陣列中的某些元件。假設我想從中刪除這個元素,這是可能的,而不必重新通過數組來獲得元素的索引?

我正在尋找類似拼接的東西,它可以處理元素的引用而不是元素的索引。

+0

可能的重複:http://stackoverflow.com/questions/3396088/how-do-i-remove-an-object-from-an-array-with-javascript – acudars

+1

寫入'TheObject = null'不會清除來自數組的對象。你錯了。 – Jon

+2

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

回答

21

只需使用Array.prototype.indexOf

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

請記住,如果針對IE < 9,你將需要引入填充工具爲indexOf;您可以在MDN頁面找到one

+1

刪除從哪裏來的? – dandavis

+0

@dandavis:我似乎很困惑。更換。 – Jon

+0

沒有indexOf在IE8中工作嗎? – frenchie