在 JavaScript 中,有没有办法根据条件来初始化对象的属性?我尚未在这里找到相关信息。
例如:存在一个变量,如果它不是 null
或 undefined
,那么在初始化对象时,可以仅用一行代码将其值添加为一个属性。
let optionA = "Some option";
const obj = {
id: 1,
name: "Object 1",
?optionA, // 若 'optionA' 存在,则添加该属性
}
目前我只知道一种方法:在初始化之后再添加可选属性。
const obj = {
id: 1,
name: "Object 1",
}
if (optionA) {
obj.optionA = optionA;
}
if (optionB) {
obj.optionA = optionB;
}
if (optionC) {
obj.optionA = optionC;
}
if (optionD) {
obj.optionA = optionD;
}
如您所见,在这种情况下,无法使用简洁的一行对象属性简写语法或三元运算符,导致代码变得冗长。
我所找到的所有解决方案中,使用扩展运算符添加属性看起来甚至比 if
语句更糟糕。
我还注意到这个原则在 fetch API 中部分实现:
let optionA;
const req = await fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1,
optionA,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
})
.then(response => response.json())
.then(json => console.log(json));
// 输出:{title: 'foo', body: 'bar', userId: 1, id: 101}
这种方法仅适用于 undefined
,并且由于请求负载中会移除 optionA
属性,因此日志输出将不包含 optionA
属性。