2013-07-15 44 views
9

Giả sử tôi có một mảng đối tượng được gọi là và một hàm nhất định trả về tham chiếu cho một phần tử cụ thể trong mảng đó; một cái gì đó như thế này:loại bỏ đối tượng khỏi mảng chỉ với tham chiếu của đối tượng

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

function DoWork() { 

    var TheObject = GetTheObject(SomeParamter); 
} 

Tại thời điểm này, TheObject trỏ đến một phần tử nhất định trong mảng. Giả sử tôi muốn loại bỏ phần tử này từ , điều này có thể thực hiện được mà không cần phải di chuyển qua mảng để lấy chỉ mục của phần tử không?

Tôi đang tìm kiếm thứ gì đó giống như mối nối sẽ hoạt động với tham chiếu đến phần tử thay vì chỉ mục của phần tử.

+0

có thể trùng lặp: http://stackoverflow.com/questions/3396088/how-do-i-remove-an-object-from-an-array-with-javascript – acudars

+1

Viết 'TheObject = null' sẽ không xóa đối tượng từ mảng. Bạn đã sai rồi. – Jon

+2

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

Trả lời

21

Đơn giản chỉ cần sử dụng Array.prototype.indexOf:

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

Hãy ghi nhớ rằng nếu nhắm mục tiêu IE < 9 bạn sẽ cần phải giới thiệu một polyfill cho indexOf; bạn có thể tìm thấy one trong trang MDN.

+1

nơi đã xóa từ đó? – dandavis

+0

@ dandavis: Có vẻ như tôi đang gặp rắc rối. Đã thay thế. – Jon

+0

hiện indexOf hoạt động trong IE8? – frenchie

Các vấn đề liên quan