我有
let a = {foo:45, bar:25}
我只想将属性foo设置为b。
let b = {foo:a.foo} //this can work
但是您可以看到,我不得不重写foo两次。
有没有办法告诉JavaScript:将 a 中的属性 [propname] 设置为 [propname] < / em> 在 b
中类似于传播算子
b = {...a} //without having to delete bar
答案 0 :(得分:3)
您可以删除不需要的属性。
let a = { foo: 45, bar: 25 },
{ bar, ...b } = a;
console.log(b);
答案 1 :(得分:2)
答案 2 :(得分:1)
这很丑陋且冗长,但是您不必两次指定“ foo”,也不必了解其他属性:
let a = {foo:45, bar:25};
let b = Object.fromEntries(Object.entries(a).filter(([k]) => k === "foo"));
console.log(b);
另一个丑陋的解决方案使用is not recommended, and forbidden in strict mode的关键字with
:
let a = {foo:45, bar:25};
let b = (a => { with(a) { return {foo} } })(a);
console.log(b);