Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6-解构分配-将一些属性从现有对象解包到新对象?_Javascript_Object_Ecmascript 6_Destructuring - Fatal编程技术网

Javascript ES6-解构分配-将一些属性从现有对象解包到新对象?

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

是否可以将对象的某些键解压缩到新对象

比方说,我想将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, 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也许。尽管如此,答案还是很聪明。感谢你的回答,但我正在寻找——任何数量的未知钥匙。只要写一封信就行了。任何合理命名的助手都可能比某些超级复杂的解构/重构更具可读性。