2013-07-21 34 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