2013-07-21 2 views
0

JSON 파일의 설정 키를 반복합니다. 때때로 이러한 키의 값은 비어 있습니다 (null?은 적절한 단어입니까?). 이 때문에 나중에 상호 작용할 때 오류가 발생합니다. 이 빈 값을 val[]으로 보내지 않도록 제거하고 싶습니다.비어있는 JSON 키를 필터링하는 방법 (null?)

Exampe JSON :

post_a: "THis is key 1" 
post_b: "this is key 2" 
post_c: "this is key 3" 
post_d: "" 
// I want to filiter out post_d because it is empty 

루프 :

keys = ["post_a", "post_b", "post_c", "post_d"]; 
val = []; 
$.each(keys, function(i, key) { 
    val[i] = data[key]; 
    return val[i]; 
    }); 

현재,이 루프 finishs 후 : 의도 한대로 val.length = 4이 경우 작업을했다 : val.length = 3

+0

_ "null (null? 적절한 단어?)"_ - 아니요, 빈 문자열과 'null'은 같은 것이 아닙니다. 그리고 당신의 예제 "JSON"은 JSON이 아닙니다. 또한 함수에서'return val [i];를 갖는 것은 의미가 없습니다. – nnnnnn

답변

1
keys = ["post_a", "post_b", "post_c", "post_d"]; 
val = []; 
$.each(keys, function(i, key) { 
    if(data[key]){ 
     val[i] = data[key]; 
     return val[i]; 
    } 
    }); 

코드에 null 체크가 없습니다. 단지 모든 것을 항상 추가합니다. 위를 시도하십시오

+0

와우 ... 나는 바보 같아. –

+0

'return val [i];'줄도 제거 할 수 있습니다. 빈 문자열이 아닌'$ .each()'콜백 테스트와 관련하여 아무 것도 유용하지 않습니다. – nnnnnn

1
if (data[key]) { 
    // var is defined, do your code 
} 
+1

'data [key]'에'false' 값이 주어 졌다면 어떨까요? 그런 다음 정의되었지만 if 테스트에서는 작동하지 않습니다. (예, OP 만 문자열을 사용하는 것 같습니다. 그러나 여전히 더 일반적인 솔루션이 손상되지는 않을 것입니다.) – nnnnnn

+0

@nnnnnn 불필요한 질문은 아니지만 분명히 훌륭한 질문입니다. –

+0

'null '에 객체를 반환하기 때문에 여기에'typeof'를 사용할 수 없습니다. – vladkras

관련 문제