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

How to prevent javascript if statement to evaluate 0 as an empty string?

我有一个 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 视为空值?

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

如果我能做些什么来改进答案,请发表评论..

别忘了查看我的代码片段

祝你有愉快的一天..

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>

您可以使用逻辑运算符 (||) 添加 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>