这显然是使用传统循环的直截了当,但我很好奇是否有人能够想到一个很好的,紧凑的方式来进行解构和扩展运算符。
例如,假设我有
const foo = { a: 1, b: 2, c: 3, d: 4 };
const list = ['a', 'd'];
我想创建bar = { a: 1, d: 4 }
。
您可以执行类似
的操作const bar = {};
list.forEach((p) => { bar.p = list.p; });
但我想知道是否有人使用ES2015 +进行光滑的单线程。例如,您可以执行const { b, c, ...bar } = foo
,但如果您在运行时之前已经知道了逆变量。
虽然理想情况下该解决方案将支持数组中的动态属性列表,但具有静态已知列表的列表总比没有好。 (例如,const bar = ({{ a, d }} = foo)
答案 0 :(得分:-1)
我认为你能做的最好的事情是Array#reduce
:
const foo = { a: 1, b: 2, c: 3, d: 4 };
const list = ['a', 'd'];
const bar = list.reduce((o, k) => (o[k] = foo[k], o), {})
console.log(bar)