Daw*_*ski 7 javascript javascript-objects typescript
我正在开发一个小API,我想尝试使用HTTP PATCH REQUEST而不使用一堆if语句来更新数据.我正在尝试仅使用更改的数据填充传出数据对象.
update() {
let prop1 = hasBeenChanged.prop1 ? changedData.prop1 : null;
// ...
let propN = hasBeenChanged.propN ? changedData.propN : null;
let data: IPatchProfile = {
// something like --> property != null ? property: property.value : nothing
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法动态创建数据对象?
小智 19
根据您使用的 JS 版本,您可以使用扩展运算符 ...
const getData = data => ({
...data.first && { 'Custom First Prop Name': data.first },
...data.second && { 'Custom Second Prop Name': data.second },
...data.third && { third: data.third },
...data.fourth && { fourth: data.fourth },
});
Run Code Online (Sandbox Code Playgroud)
Gib*_*olt 13
如果您不需要内联添加值,那么像这样编写作业就非常简单明了。
const val1 = 1
const val2
const data = {}
val1 && (data.a = val1) // 1
val2 && (data.b = val2) // Not added
// data = { a : 1 }
Run Code Online (Sandbox Code Playgroud)
注意:如果该值是假的,这将不起作用
小智 8
你可以使用Object.assign:
let data = Object.assign({},
first === null ? null || {first},
...
);
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为Object.assign将跳过null参数.
如果您确定属性值不是"伪造",那么写入会更短:
let data = Object.assign({},
first && {first},
...
);
Run Code Online (Sandbox Code Playgroud)
假设对象将在某个时刻被字符串化,因为字符串化会忽略未定义的值,您也可以尝试
let data = {
first: first === null ? undefined : first,
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8533 次 |
| 最近记录: |