2013-07-21 67 views
0

我正在循环JSON文件的设置键。有时这些键的值将是空的(null?是空的适当的词?)。因为这会在以后的交互中产生错误。我想删除这些空值以发送到val[]如何筛选出空的JSON键(空?)

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]; 
    }); 

目前,经过这个循环共完成:val.length = 4如果这是工作打算:val.length = 3

+0

_“empty(null?is null the proper word?)”__否,空字符串和null不是一回事。而你的例子“JSON”根本不是JSON。在函数中返回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]; 
    } 
    }); 

代码中没有空检查。它只是一直添加一切。试试以上

+0

哇...我觉得哑巴。 –

+0

你也可以在'$ .each()'回调测试非空字符串的情况下删除'return val [i];'行,它没有任何用处。 – nnnnnn

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

如果'data [key]'被赋予值'false'会怎么样?然后它被定义,但不会与你的if测试一起工作。 (是的,我知道OP似乎只是使用字符串,但仍然是一个更一般的解决方案不会伤害。) – nnnnnn

+0

@nnnnnn没有必要,但明确的方式来说明一个不好的问题。 –

+0

你不能在这里使用'typeof',因为它在'Null'上返回对象。 – vladkras