是否存在一种更易读的方式来将对象的未定义字段散布到另一个对象上而不遍历该对象的每个元素?
以下示例将对象A
分布在对象B
上:
let A = { f1:'Foo', f2:'Bar', f3:'Baz' }
let B = { ...A }
// Now B has the value of { f1:'Foo', f2:'Bar', f3:'Baz' }
但是在下面的示例中,传播算子将不包含未定义的值:
let A = { f1:'Foo', f2:undefined, f3:'Baz' }
let B = { ...A }
// Now B has the value of { f1:'Foo', f3:'Baz' }
// I would like it to be spread like { f1:'Foo', f2:undefined, f3:'Baz' }
// or { f1:'Foo', f2:null, f3:'Baz' }
是否有一种使用传播算子投影具有undefined
值的字段的方法? (很显然,全部遍历对象A
的每个字段,如果该字段的值不是B
则扩展到undefined
)
答案 0 :(得分:0)
如果您询问价差运算符是否会在“价差”后维护未定义的属性值,那么它们会这样做。
const original = { one: 1, two: 2, three: undefined, four: null };
console.log(original);
const withSpread = {five: 5, ...original };
console.log(withSpread);
console.log(typeof withSpread.three === 'undefined')
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
答案 1 :(得分:0)
事实证明这是我的无效主张。传播算子确实传播了具有undefined
值的字段。 JSON.stringify()
删除了我的一个来源中的那些字段,这导致我提出了无效的断言。
对于Express.js
个用户;您可以使用app.set('json replacer', (k, v) => v===undefined ? null : v);
通过用undefined
替换null
值来表达字符串化json响应
或者类似地,您可以使用JSON.stringify({...}, (k, v) => v===undefined ? null : v)
将undefined
的值替换为null
来对其进行字符串化