【发布时间】:2019-06-10 18:39:57
【问题描述】:
有没有更易读的方式将一个对象的未定义字段传播到另一个对象上,而不遍历它的每个元素?
以下示例将对象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)
【问题讨论】:
-
我无法重现问题。
let A = { f1:'Foo', f2:undefined, f3:'Baz' } let B = { ...A }这只是给了我预期的结果。 -
您的断言不正确。如果
A有一个字段f2具有any 值,包括undefined,它将被点差复制到B(这不是真正的运算符,因为这是值得的) . -
哦,对了。。我猜是
Express.js,不包括使用Response::json()时未定义的字段 -
@iGoodie 这是因为
undefined在 JSON 中不是合法值,尽管它是 JS 文字中键的合法值。 -
请注意,虽然 undefined 是非法的,但 null 是 JSON 中的有效值
标签: javascript operators spread-syntax