2011-12-18 89 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