如何防止JavaScript if语句将0评估​​为空字符串?

时间:2018-12-12 14:56:13

标签: javascript jquery if-statement operators

我有js对象,该对象的数据包含数字。其中一些可以是0。在这种情况下,if语句会将这些值评估为空字符串。这是示例:

var dataObj = {
  "one": 13,
  "two": 0,
  "three": 3
}

$.each(dataObj, function (j, k) {
  if(k){
    console.log('Column: '+k);
  }else{
    console.log('Empty');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

我想知道如何防止这种情况发生?有没有一种方法可以检查值是否为空,但同时不要将0视为空值?

2 个答案:

答案 0 :(得分:2)

您可以将条件更改为k || k===0,这意味着(据我所知)它将接受not-undefinednot-nullnot-emptyzero int valuetrue

请评论我有什么办法可以改善答案。

别忘了签出我的代码段

祝你有美好的一天。

var dataObj = {
  "one": 13,
  "two": 0,
  "three": 3,
  "four": null,
  "five": ''
}

$.each(dataObj, function (j, k) {
  // use 'or' operator
  if(k || k===0){
    console.log('Column: '+k);
  }else{
    console.log('Empty');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

答案 1 :(得分:0)

您可以使用逻辑运算符(k==0)添加||作为条件的一部分,当值为0时将通过条件。

尝试

if(k || k == 0){

var dataObj = {
  "one": 13,
  "two": 0,
  "three": 3
}

$.each(dataObj, function (j, k) {
  if(k || k == 0){
    console.log('Column: '+k);
  }else{
    console.log('Empty');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>