2013-07-15 2 views
9

이라는 개체 배열이 있고 특정 함수가 해당 배열 내의 특정 요소에 대한 참조를 반환한다고 가정합니다. 이런 식으로 뭔가 :이 시점에서개체 참조로 배열에서 개체 제거

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

function DoWork() { 

    var TheObject = GetTheObject(SomeParamter); 
} 

, 배열의 특정 요소에 TheObject 점. 이 요소를 에서 제거하려고한다고 가정하면 요소를 색인으로 가져 오기 위해 배열을 다시 보지 않아도됩니다.

필자는 요소의 색인보다는 요소에 대한 참조로 작동하는 splice를 찾고 있습니다.

+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에 대한 polyfill을 도입 할 필요가 있다는 사실을 양지해야합니다; MDN 페이지에서 one을 찾을 수 있습니다.

+1

을 가지고 있지 않을 때 splice를 사용하는 것입니다. – dandavis

+0

@dandavis : 내 고생 한 마음이 보인다. 대체 됨. – Jon

+0

IE8에서 indexOf가 작동합니까? – frenchie

관련 문제