Javascript 使用ES6对象分解从另一个对象创建具有属性和值的对象

Javascript 使用ES6对象分解从另一个对象创建具有属性和值的对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我经常困惑javascript中的对象分解是否适用于某些情况,我刚刚遇到了一个。在这段代码中,我只是从this对象中获取属性,并将它们分配给新数据对象上的相同属性/值: const data = { rating: this.rating, title: this.title, text: this.text, name: this.name, location: this.location, email: this.email, file

我经常困惑javascript中的对象分解是否适用于某些情况,我刚刚遇到了一个。在这段代码中,我只是从
this
对象中获取属性,并将它们分配给新
数据
对象上的相同属性/值:

const data = {
    rating: this.rating,
    title: this.title,
    text: this.text,
    name: this.name,
    location: this.location,
    email: this.email,
    files: this.files
};

是否可以使用某种对象解构来完成此任务,或者它与此用例无关?

如果您想要此
的所有属性,可以使用扩展运算符:

const data = {
  ...this
}
如果只需要选择几个属性,则可以在以后删除不必要的属性,或将它们设置为未定义(尽管这与不存在/已删除的属性不同):


如果需要此
的所有自身属性,可以使用扩展运算符:

const data = {
  ...this
}
如果只需要选择几个属性,则可以在以后删除不必要的属性,或将它们设置为未定义(尽管这与不存在/已删除的属性不同):


你可以用这样的东西

const choose = (src, ...keys) => keys.reduce((result, key) => ({ ...result, [key]: src[key] }), {});
示例用法

const choose=(src,…key)=>keys.reduce((result,key)=>({…result,[key]:src[key]}),{});
常数src={
评级:1,
标题:2,
案文:3,
姓名:4,,
地点:5,,
电邮:6,,
档案:7,
不是我:8
};
const data=choose(src,‘评级’、‘标题’、‘文本’、‘名称’、‘位置’、‘电子邮件’、‘文件’);

控制台日志(数据)您可以使用这样的东西

const choose = (src, ...keys) => keys.reduce((result, key) => ({ ...result, [key]: src[key] }), {});
示例用法

const choose=(src,…key)=>keys.reduce((result,key)=>({…result,[key]:src[key]}),{});
常数src={
评级:1,
标题:2,
案文:3,
姓名:4,,
地点:5,,
电邮:6,,
档案:7,
不是我:8
};
const data=choose(src,‘评级’、‘标题’、‘文本’、‘名称’、‘位置’、‘电子邮件’、‘文件’);

控制台日志(数据)这不是解构,这是唯一的扩展语法用法。这不是解构,这是唯一的扩展语法用法。您想要所有属性还是选定的ones@JaromandaX只是我在示例中显示的所选属性。您想要所有属性还是所选属性ones@JaromandaX只是我在示例中显示的一些选择。非常酷的解决方案。尽管我更好奇的是,是否有一种简单的方法可以在解构中实现这一点。我不想创建一个像您使用
choose
那样的新函数。看起来答案可能只是“不”。不,如果不创造一个非常酷的解决方案,我想不出任何事情。尽管我更好奇的是,是否有一种简单的方法可以在解构中实现这一点。我不想创建一个像您使用
choose
那样的新函数。看起来答案可能只是“不”。不,不创建函数,我想不出任何东西