问题描述
我正在使用一个小型API,我想使用HTTP PATCH REQUEST
更新数据而不使用一堆if语句.我正在尝试仅使用更改后的数据填充传出数据对象.
I'm working on a small API and I want to update the data using HTTP PATCH REQUEST
without using a bunch of if statements. I'm trying to fill the outgoing data object with the changed data only.
update() {
let prop1 = hasBeenChanged.prop1 ? changedData.prop1 : null;
// ...
let propN = hasBeenChanged.propN ? changedData.propN : null;
let data: ISomething = {
// something like --> property != null ? property: property.value : nothing
}
}
有什么方法可以动态创建数据对象?
Is there any way to create the data object dynamically?
推荐答案
您可以将Object.assign
与三元运算符结合使用:
You could use Object.assign
in combination with the ternary operator:
let data = Object.assign({},
first === null ? null : {first},
...
);
之所以可行,是因为Object.assign
会跳过null
参数.
This works because Object.assign
will skip over null
parameters.
如果您确定该属性值不会是"falsy",那么编写该代码会短一些:
If you are sure that the property value is not going to be "falsy", then it would be bit shorter to write:
let data = Object.assign({},
first && {first},
...
);
假设某个对象将要进行字符串化,因为字符串化会忽略未定义的值,因此您也可以尝试
Assuming the object is going to be stringified at some point, since stringification ignores undefined values, you could also try
let data = {
first: first === null ? undefined : first,
...
}
这篇关于不为null时向对象添加属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!