2011-12-18 106 views
0

,所以我通過一個JSON對象解析像這樣解析JSON有效

if(val.function1!==""){ 
    $("#contentFunction").text(val.function1); 
} 

if(val.function2!==""){ 
    $("#contentFunction").text(val.function1 + "; " + val.function2); 
} 

if(val.function3!==""){ 
    $("#contentFunction").text(val.function1 + "; " + val.function2 
     + "; " + val.function3); 
} 

我wondiering如果有檢查的一種更好的方式,如果我的JSON對象屬性爲空,而不必噸的條件。 ..這變得非常混亂,如果例如我有多達val.function10

感謝您的幫助

+1

「function10」 的單純想法是一個代碼味道,正確重構它。 – Raynos 2011-12-18 18:19:05

+0

沒錯。我在想,我應該從服務器獲取整個函數元素列表,而不是每個元素分開......這種方式我只是追加它 – climboid 2011-12-18 18:31:07

+0

正確的json會是'{function:[...]}' – Raynos 2011-12-18 18:33:11

回答

0
var strs = []; 
for (var i = 0; i < 10; i++) { 
    var value = val["function" + i]; 
    value && strs.push(value); 
} 
$("#contentFunction").text(strs.join("; ")); 
+0

這仍然可以追加空字符串恐怕...但它越來越接近 – climboid 2011-12-18 18:33:12

+0

@ climboid固定 – Raynos 2011-12-18 18:34:40

+0

我想如果我們只是添加一個條件來檢查是否val [「function」+ i]!==「」我們應該很好......感謝Raynos! – climboid 2011-12-18 18:36:38

0

像這樣的事情?

var content = ""; 

for (var prop in val) { 
    if (!val.hasOwnProperty(prop)) continue; 

    if (val[prop] !== "") { 
     content += "; " + val[prop]; 
    } 
} 

還是在node.js中(或現代瀏覽器):

var c = Object.keys(val).filter(function (k) { 
    return val[k] !== ""; 
}).map(function (k) { 
    return val[k]; 
}).join("; "); 
+0

對於上帝的愛不要把代碼放在一行._。 – Raynos 2011-12-18 18:32:18