如何为值赋值为boolean false的变量提供可选值?

时间:2016-12-22 09:12:42

标签: javascript html

我有一个字段数组,用于设置结果对象。如果该字段为空,则结果使用该字段的现有值:

form: {
  fields: [{
    name: 'name',
    value: 'Peter'
  } , {
    name: 'age',
    value: 0
  }]
}

form.fields.forEach(field => {
  result[field.name] = field.value ||
     original.value
}

我认为您可以看到问题:value: 0从未在结果中设置,因为它被评估为false。

这种情况的常用解决方案是什么?当您需要将0评估为true时?

3 个答案:

答案 0 :(得分:1)

parseInt(val) === 0

===也检查类型(int)

或者你可以尝试

typeof field.value != 'undefined'

这会将0评为true,仅将undefined评为false

答案 1 :(得分:1)

通过这种方式,您可以确保您的字段完全没有价值,不仅0而且还有""空字符串。

form.fields.forEach(field => {
  if( typeof field.value !== "undefined" ) {
      result[field.name] = field.value
  } else {
      result[field.name] = original.value;
  }
}

修改

@Felix Kling的评论中建议,使用三元运算符的简短版本:

 form.fields.forEach(field => {
   result[field.name] = typeof field.value !== "undefined" ? field.value : original.value; 
}

答案 2 :(得分:1)

您可以通过执行undefined来检查值是否为field.value !== undefined

form.fields.forEach(field => result[field.name] = field.value !== undefined ? field.value : original.value);

代码示例:

let zero = 0;

console.log(zero !== undefined ? zero : 'other value');