如何为变量提供可选的值,该变量值评估值以boolean false



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

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

您可以通过执行field.value !== undefined

检查值是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');

parseInt(val) === 0

===检查类型(int)

或者您可以尝试

typeof field.value != 'undefined'

这将评估0为true,只有 undefined为false

这样,您可以确定您的字段根本没有值,不仅是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; 
}

最新更新