我的表情可能不清楚,以下代码是否缩写
$x = array_search ('english', $request->all());
或
let a = true;
let obj = {
x: 1,
y: 2
}
if(a){
obj.z = 3
}
也许我太懒了,但是我仍然想问,我不知道如何在Google上搜索这个问题。
答案 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);