JS对象文字或数组如何基于判断确定是否创建某些属性

时间:2018-09-07 10:04:25

标签: javascript

我的表情可能不清楚,以下代码是否缩写

$x = array_search ('english', $request->all());

let a = true;
let obj = {
  x: 1,
  y: 2
}
if(a){
  obj.z = 3
}

也许我太懒了,但是我仍然想问,我不知道如何在Google上搜索这个问题。

1 个答案:

答案 0 :(得分:0)

对象

您不能(合理地)基于标志在对象初始化器中创建对象属性。在第一个示例中拥有它的方式就是如何做到这一点。

不合理的方法是使用扩展表示法(对象为ES2018 +)和条件运算符:

let obj = {
  x: 1,
  y: 2,
  ...(a ? {z: 3} : {})
};

示例:

let a = true;
let obj = {
  x: 1,
  y: 2,
  ...(a ? {z: 3} : {})
};
console.log(obj);

如果您不能依靠对象散布(这是很新的东西),则可以使用Object.assign来代替(同样,如果我们不合理:-)):

let obj = Object.assign({
  x: 1,
  y: 2
}, a ? {z: 3} : null);

示例:

let a = true;
let obj = Object.assign({
  x: 1,
  y: 2
}, a ? {z: 3} : null);
console.log(obj);

数组

您不能(合理地)基于标志在数组初始化器中创建条目。您将按照显示的方式进行操作。

与对象一样,不合理的方法是使用扩展符号(对于数组为ES2015 +)和条件运算符:

let arr = ['a', 'b', ...(a ? ['c'] : []), 'd', 'e'];

示例:

let a = true;
let arr = ['a', 'b', ...(a ? ['c'] : []), 'd', 'e'];
console.log(arr);