Javascript ES6-解构分配-将一些属性从现有对象解包到新对象?
是否可以将对象的某些键解压缩到新对象 比方说,我想将3个键(Javascript ES6-解构分配-将一些属性从现有对象解包到新对象?,javascript,object,ecmascript-6,destructuring,Javascript,Object,Ecmascript 6,Destructuring,是否可以将对象的某些键解压缩到新对象 比方说,我想将3个键(a,b,c)从test对象复制到一个新对象(abc)。下面提到的代码将工作 const test = {a:1, b:2, c:3, d:4, e:5 }; const {a, b, c} = test; const abc = { a, b, c, f: 6}; 有什么方法可以在一句话中完成吗? 还有一种方法 const test = {a:1, b:2, c:3, d:4, e:5 }; const abc = { ...test
a
,b
,c
)从test
对象复制到一个新对象(abc
)。下面提到的代码将工作
const test = {a:1, b:2, c:3, d:4, e:5 };
const {a, b, c} = test;
const abc = { a, b, c, f: 6};
有什么方法可以在一句话中完成吗?
还有一种方法
const test = {a:1, b:2, c:3, d:4, e:5 };
const abc = { ...test, f: 6};
但是使用这种方法,我以后必须删除不需要的键(d
,e
)
(最佳解决方案:如果我们不必跟踪不需要的关键点。可能有n个不需要的关键点。)您可以使用来分解初始对象:
const test={a:1,b:2,c:3,d:4,e:5};
常数{d,e,…abc}={…test,f:6};
控制台日志(abc)
如果您知道新对象中需要的特定键,我会使用好的旧对象。分配
const extendInfo = { //object containing properties to extend other object }
const abc = { //your obj to extend }
Object.assign(abc, { a: extendInfo.a, b: extendInfo.b, c: extendInfo.c });
如果你有很多道具来提取语法,那么语法会变得更重,我会建议一种不同的方法,但如果只是几个道具,我认为这是更干净、更快的方法——从技术上讲,如果你不使用解构params和IIFE(立即调用的函数表达式)来计算变量声明的话,这是一行,我们可以去掉源对象中不需要的键
const test={a:1,b:2,c:3,d:4,e:5};
常数abc=({a,b,c})=>({a,b,c}))(测试);
控制台日志(abc)代码>这是特定于排除键d和e的-我认为问题是针对任何数量的未知键?如果测试包含大量的键,那么开销将是巨大的,而您只需要这些键three@FabioLolli也许。尽管如此,答案还是很聪明。感谢你的回答,但我正在寻找——任何数量的未知钥匙。只要写一封信就行了。任何合理命名的助手都可能比某些超级复杂的解构/重构更具可读性。