如果json返回null,则设置“0”

时间:2018-02-20 05:12:46

标签: jquery ternary-operator

我在div中显示json数据是否有效。

var details= response.data.filters;
    $.each(details,function(i,value){
    $('.subSection').append('<section><label>Speed</label><label>'+value.speed+'</label></section>');
});

我将0作为value.speed时尝试显示null。所以我尝试使用这样的三元运算符

$('.subSection').append('<section><label>Speed</label><label>'+(value.speed==null)?'0':value.speed+'</label></section>');

但是它会像这样连续返回零。0000。不是一个合适的结构元素。

我认为我在三元运算符中做错了。如果错了,任何人都可以纠正我吗?

2 个答案:

答案 0 :(得分:2)

问题在于您的操作顺序,您需要将整个三元包装在parens中。您的陈述有效地评估为:

$(".subSection").append(
  ("<section><label>Speed</label><label>" + (value.speed == null))
    ? "0"
    : (value.speed + "</label></section>")
);

你想要的是:

$(".subSection").append(
  "<section><label>Speed</label><label>" +
    (value.speed == null ? "0" : value.speed) +
    "</label></section>"
);

此外,如果(value.speed || '0')是任何有价值的值,您可以用'0'取代三元使用value.speed

将来你最好不要提取语句而不是内联它们来完全阻止这个问题:

const speed = (value.speed == null) ? "0" : value.speed;
$(".subSection").append(
  "<section><label>Speed</label><label>" +
    speed +
    "</label></section>"
);

答案 1 :(得分:2)

请尝试用括号括起来

$('.subSection').append('<section><label>Speed</label><label>'+((value.speed==null)?'0':value.speed)+'</label></section>');

希望这有帮助!