2014-11-13 5 views
0

나는 특정 주소에 값을 제거하려는 개체에서 일하고 있습니다. 내가 요소의 위치를 ​​필요로하고 여기

객체

에서 제거 할 코드 :

var matches = { 
    "users-email": "email", 
    "users-activated": "activated", 
    "users-created_at": "created_at", 
    "users-registration_page": "registration_page", 
    "profiles-firstname": "firstname" 
} ; 
var option = 'firstname'; 

var if_in = $.inArray(option, matches); 
//console.log(matches) 
if(if_in !== -1) 
{ 
    matches.splice(if_in, 1); 
} 

$.each(matches , function(i,v){ 
    $('.test').append(v+'<br>'); 
}); 

내 객체의 $.inArray()가 반환 작동하지 -1.

누군가이 나를 찾을 수 있도록 도와 줄 수 있습니까?

jsfiddle link

+4

당신의 일치 변수가 객체가 아닌 배열 방식으로 값을 확인하는 것입니다 . – vaso123

+0

@Alexander 옵션이 핵심 일 경우에만 작동합니다. 이 경우 값은 –

+2

입니다.'$ .inArray'는 배열에서만 작동합니다. 'matches'는 배열이 아닙니다. –

답변

4

수정 대답은 값에 의해 삭제합니다. $ .each를 사용하여 객체를 반복하고 일치하는 값을 삭제할 수 있습니다. 당신은 값과 키가 아닌에 대해 확인하는 것처럼

$.each (matches, function(key, value) { 
    if (value == option) { 
     delete matches[key]; 
     return false; //deleted matching value 
    } 
}); 

값을 기준으로 여러 키를 삭제하려면,

var keysToDelete = []; 
for (var key in matches) { 
    if (matches[key] == option) { 
     keysToDelete.push(key); 
    } 
}; 

for (var i = 0; i < keysToDelete.length; i++) { 
    if (matches.hasOwnProperty(keysToDelete[i])) { 
     delete matches[keysToDelete[i]]; 
    } 
} 
+0

익명 다운 vote? 왜? –

+4

이 질문을 해결하지 않기 때문에. 그는 열쇠가 아닌 * 가치 *를 찾고 있습니다. –

+0

@RocketHazmat 내 잘못, 고마워 .. 가치에 의해 삭제 업데이 트되었습니다. –

3

보인다; 어쩌면이게 뭐니? 당신이 당신의 옵션은 값과 일치하는지 확인하려면

var key = undefined; 
for(var i in matches) { 
    if (matches[i] === option) {key = i; break; } 
} 
if (key !== undefined) delete matches[key]; 
+2

'키'를 찾은 후 '깨기'를 원하십니까? :-P –

+0

확실한 ... 나를 조잡하게 –

4

는, 가장 간단한 방법은 각각의 속성을 통해 반복하고

var matches = {"users-email": "email", "users-activated": "activated", "users-created_at": "created_at", "users-registration_page": "registration_page", "profiles-firstname": "firstname"} ; 
var option = 'firstname'; 

for (var key in matches) { 
    if (matches[key] === option) { 
     alert ("IN"); 
     break; 
    } 
} 
관련 문제