javascript - 包含对象数组和字符串数组的深拷贝道具
问题描述
目标:
我需要在组件中读取和写入道具。
挑战:
- 道具是只读的。我相信深度应对/克隆会解决这个问题。
- 我不知道如何深度复制道具,因为它包含不同的变量类型,例如字符串数组和对象数组。
这些是变量:
var data = [
{ID: 5, First: "first", Middle: null, Last: "last", Job Listing ID: null, …},
{ID: 6, First: "first", Middle: null, Last: "last", Job Listing ID: null, …},
…
]
var default_refine_toggle_display = [
"ID",
"CV",
"C Letter",
"NDA",
"Photo",
"Address",
"First",
"Middle",
"Last",
"Email",
"Job Title",
"Status",
]
var fake_prop_change_name = {
applicant_id: "ID",
recruiter_id: "Recruiter ID",
cover_letter_id: "C Letter",
nda_id: "NDA",
file_photo_id: "Photo",
resume_cv_id: "CV",
file_address: "Address",
first_name: "First",
middle_name: "Middle",
last_name: "Last",
gender: "Sex",
personal_email: "Email",
building_number: "Building #",
street_number: "Street #",
street_name: "Street Name",
town_name: "Town Name",
state: "State",
country: "Country",
applicant_status_id: "Status ID",
status_datetime_change: "Change Datetime",
why_should_we: "Why Should We",
job_listings_id: "Job Listing ID",
name: "Status",
Job_title_Status: "Job Title",
personal_email:"Email"
}
var column_order = ["applicant_id", "Status","Job_title_Status", 'first_name', "middle_name", "last_name", "personal_email"];
var make_view_file = ["CV", "C Letter", "NDA","Photo","Address"]
这就是将这些变量传递给组件的方式:
<Component_table
default_refine_toggle_display={default_refine_toggle_display}
fake_prop_change_name={fake_prop_change_name}
column_order={column_order}
make_view_file={make_view_file}
data={database_data['Job Applications']}
/>
我试过的
- var props_editable = Array.from(props)
- var props_editable = 道具
我正在尝试什么:
我在考虑可能单独深度克隆每个道具,然后将它们存储在一个新数组中。这样我就可以根据需要处理每个 prop 变量类型的深度克隆。
您对此有何看法?
我发现处理数组和对象对我来说需要大量的脑力,但似乎无法弄清楚这一点。
解决方案
如果你想克隆一个数组,你可以使用 ES6 spread syntax。它可能有助于克隆数组和对象。
克隆对象数组
var data = [
{
ID: 5,
First: "first",
Middle: null,
Last: "last",
"Job Listing ID": null,
},
{
ID: 6,
First: "first",
Middle: null,
Last: "last",
"Job Listing ID": null,
},
];
const copyData = [...data];
console.log(copyData);
克隆一个对象
const obj = {
name: "Praveen",
address: {
streetName: "Amphitheatre streer",
blockNumber: 8,
Country: "USA",
},
};
const cloneObj = { ...obj };
console.log(obj);
console.log(cloneObj);
推荐阅读
- android - 如何在 Android(Java,而不是 Kotlin)中实现 MVVMi?
- python - 无法从 SavedModel 中找到匹配的函数
- javascript - 如何创建一个由 4 个数字组成的随机字符串,该字符串在我的打字稿列表中不存在?
- amazon-web-services - Amazon Cognito - OpenID Connect - 无效+ProviderName/用户名+组合
- java - 当我们在 if 块中使用 return 语句时,为什么编译器没有给出任何错误?
- c# - c# 中的购物车无法正常工作
- asp.net-core - ASP.NET Core 和 JSON Web 令牌 - 自定义声明映射
- azure - Azure 数据资源管理器将动态列中的 camelCase 值转换为 PascalCase
- python - Django中的用户自托管数据库
- sql-server - SQL 中的分区 -clustered 和 noclustered