gpt4 book ai didi

ES6 中的 JavaScript 对象文字 - 将大对象解构为较小对象的语法糖?

转载 作者:行者123 更新时间:2023-11-29 16:38:36 26 4
gpt4 key购买 nike

我想知道的是;对于我在这里尝试做的事情,是否有一个更简单的语法快捷方式。

我在循环期间有一个大型 JSON 对象,如下所示:

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 是否为我提供了一种方法来减少每个属性(即first_name、facebook_account 等)的重复?属性名称对于它们的分解方式不一定很明显 - 它基于我们的数据模型。

这是大量重复的手动工作。我想知道我是否遗漏了一些 ES6 的魔力,或者其他什么,可以让这个问题变得更美好。我并不是真的在寻找带有机器学习算法的 super 聪明的递归循环......如果可能的话,只是更短的语法。 :)

最佳答案

您可以使用对象析构:

让 {variables} = obj

和单个变量赋值:

让 obj2 = { 变量 }

变量可以是多个,并用逗号分隔。

析构时:let {name, date, another} = obj;

分配时:let obj2 = { name, date, another }

let line = {
first_name: "Zak",
last_name: "Frisch",
title: "my Title",
email: "myemail@whatever",
facebook_account: "fb",
linkedin_account: "li",
twitter_account: "tweet",
instagram_account: "ia",
snapchat_account: "sc"
};

let {first_name, last_name, title, email, facebook_account, linkedin_account, twitter_account, instagram_account, snapchat_account} = line;

let profile = {
first_name,
last_name,
title,
email
};

let social = {
facebook_account,
linkedin_account,
twitter_account,
instagram_account,
snapchat_account
};
console.log(profile, social);

关于ES6 中的 JavaScript 对象文字 - 将大对象解构为较小对象的语法糖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48792188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com