ES6/ES7 中'optional'对象键的简洁/简洁语法?



在ES6/ES7中已经有很多很酷的功能用于定义JavaScript对象。但是,以下模式在JavaScript中很常见:

const obj = { 
  requiredKey1: ..., 
  requiredKey2: ... 
};
if (someCondition) { 
  obj.optionalKey1 = ...;
}

是否有一种方法可以一次用可选的键立即定义对象?

您可以使用对象vread具有可选属性:

let flag1 = true;
let flag2 = false;
// extra cases added by Abdull
let optionalKey8 = 8;
let optionalKey9 = undefined;
let optionalKey10 = false;
let optionalKey11 = null;
let optionalKey12 = "twelve";
const obj = { 
  requiredKey1: 1, 
  requiredKey2: 2,
  ...(flag1 && { optionalKey3: 3 }),
  ...(flag2 && { optionalKey4: 4, optionalKey5: 5 }),  // ignored
  ...(flag1 && { optionalKey6: 6, optionalKey7: 7 }),
  ...(optionalKey8 && { optionalKey8 }),
  ...(optionalKey9 && { optionalKey9 }), // ignored
  ...(optionalKey10 && { optionalKey10 }), // ignored
  ...(optionalKey11 && { optionalKey11 }), // ignored
  ...(optionalKey12 && { optionalKey12 })
};
console.log(obj);

要指示optional密钥,如果条件为false

,您可以分配给 null

const someCondition = true;
const obj = { 
  requiredKey1: 1, 
  requiredKey2: 2,
  optionalKey1: someCondition ? 'optional' : null
};
console.log(obj);

JavaScript中常见以下模式

不应该。拥有许多不同形状的物体会引起性能处罚。记录应始终包含相同的键。所以只需使用

const obj = { 
  requiredKey1: …, 
  requiredKey2: …,
  optionalKey1: someCondition ? … : undefined,
};

最新更新