JavaScript对象文本和ES6-syntactic sugar将大对象解构为小对象?
我想知道的是;有没有一个更简单的语法捷径,我想在这里做什么 我在循环期间有一个大JSON对象,如下所示:JavaScript对象文本和ES6-syntactic sugar将大对象解构为小对象?,javascript,ecmascript-6,object-literal,Javascript,Ecmascript 6,Object Literal,我想知道的是;有没有一个更简单的语法捷径,我想在这里做什么 我在循环期间有一个大JSON对象,如下所示: let line = { first_name: ..., last_name: ..., title: ..., email: ..., facebook_account: ..., linkedin_account: ..., twitter_account: ..., instagram_account: ...,
let line = {
first_name: ...,
last_name: ...,
title: ...,
email: ...,
facebook_account: ...,
linkedin_account: ...,
twitter_account: ...,
instagram_account: ...,
snapchat_account: ...
};
然后,我将此有效负载分解为更小的对象:
let profile = {
first_name: line.first_name,
last_name: line.last_name,
title: line.title,
email: line.email
};
let social = {
facebook_account: line.facebook_account,
linkedin_account: line.linkedin_account,
twitter_account: line.twitter_account,
instagram_account: line.instagram_account,
snapchat_account: line.snapchat_account
};
ES6是否为我提供了减少每个属性重复的方法,如名字、facebook账户等。?属性名称在如何分解方面不一定很明显——它基于我们的数据模型
这是大量的手工工作,需要大量的重复。我想知道我是否错过了一些ES6的魔法,或者其他什么,这会让事情变得更糟。我并不是真的在寻找一个超级聪明的递归循环和一个机器学习算法……如果可能的话,只是简短的语法。:) 您可以使用对象析构函数:
let{variables}=obj
和单个变量分配:
let obj2={variables}
变量可以是多个,并用逗号分隔
解构时:让{name,date,whatever}=obj代码>
分配时:让obj2={name,date,whatever}
let line={
名字:“扎克”,
姓:“弗里希”,
标题:“我的标题”,
电子邮件:“myemail@whatever",
facebook_账户:“fb”,
linkedin_账户:“li”,
推特账户:“推特”,
instagram_账户:“ia”,
snapchat_帐户:“sc”
};
让{名字、姓氏、头衔、电子邮件、facebook账户、linkedin账户、twitter账户、instagram账户、snapchat账户}=line;
let profile={
名字,
姓,
标题
电子邮件
};
让社会={
脸谱网账户,
linkedin_账户,
推特账户,
instagram_账户,
snapchat\u帐户
};
console.log(个人资料、社交)代码>根据答案,您可以执行以下操作:
let line={
名字:“扎克”,
姓:“弗里希”,
标题:“我的标题”,
电子邮件:“myemail@whatever",
facebook_账户:“fb”,
linkedin_账户:“li”,
推特账户:“推特”,
instagram_账户:“ia”,
snapchat_帐户:“sc”
};
让profile=Object.keys(line).reduce(函数(obj,k){
如果(!k.endsWith(“U账户”))对象[k]=行[k];
返回obj;
}, {});
let social=Object.keys(line).reduce(函数(obj,k){
如果(k.endsWith(“U账户”)obj[k]=行[k];
返回obj;
}, {});
控制台日志(行);
控制台日志(概要文件);
console.log(社交)代码>更准确。