2012-04-20 2 views
4

나는 다음과 같은 영역이 있습니다jQuery Array가 배열에서 객체를 찾지 못합니까?

[>Object, >Object, >Object, >Object] 

마지막 항목을 열 :

Object 
helper: true 
id: 0 
__proto__: Object 

내가 찾은 다음 내 배열에서이 항목을 제거 할 것인지 콘솔 출력으로

에서 myArray을 하지만 항상 여기에 붙어서 -1. 아이디어?

jQuery.inArray([{'helper':true}], myArray) 

감사

+5

'({key : "value"} == {key : "value"})'는'false'로 평가되어 접근법이 왜 효과가 없는지를 보여줄 것입니다. – Griffin

+0

+1 @Griffin : JavaScript에는 객체 참조 개념이 있다는 것을 기억하는 것이 중요합니다. 사람들은 쓰레기 수거가 어떻게 작동하는지 잊을 수 있습니다! –

답변

1

사용 jQuery.each 대신 jQuery.inArray의 원치 않는 개체를 찾을 수 및 배열에서 제거 : 당신은 jQuery.grep와 함께 Array의 요소를 필터링 할 수 있습니다

var arr = [ 
{ helper: false }, 
{ helper: true }, 
{ helper: false } 
]; 

var found = -1; 
jQuery.each(arr, function(index, obj) { 
if (obj.helper) { 
    found = index; 
    return false; 
} 
}); 

if (found > -1) { 
arr.splice(found, 1); 
} 
1

:

myArray = $.grep(myArray, function (item) { 
    return !item.helper; 
}); 

inArray의 경우 : 첫 번째 인수는 ArrayObject을 새로 정의합니다. 여기에 new인데 myArray 내에있을 수 없습니다.

관련 문제