Arrays Typescript:使用嵌套的级别、键和值作为变量创建对象
我的react表单的每个字段组件都有一个对象数组,我想用表单值将其编译成一个对象Arrays Typescript:使用嵌套的级别、键和值作为变量创建对象,arrays,reactjs,typescript,object,nested,Arrays,Reactjs,Typescript,Object,Nested,我的react表单的每个字段组件都有一个对象数组,我想用表单值将其编译成一个对象 接口FormProps{ 名称:字符串; 子名称?:字符串; 值:未定义的|字符串|数字|布尔值; } 接口数据支柱{ 用户:ProfileProps; 朋友:未定义的| ProfileProps; 电话:未定义|号码; car:布尔型; } 界面配置文件道具{ 名字:字符串; 年龄:未定义|数字; 性别:'男'|'女'; } const getDatas=(表单:FormProps[])=>{ 常量数据={};
接口FormProps{
名称:字符串;
子名称?:字符串;
值:未定义的|字符串|数字|布尔值;
}
接口数据支柱{
用户:ProfileProps;
朋友:未定义的| ProfileProps;
电话:未定义|号码;
car:布尔型;
}
界面配置文件道具{
名字:字符串;
年龄:未定义|数字;
性别:'男'|'女';
}
const getDatas=(表单:FormProps[])=>{
常量数据={};
//for(形式常数){
// }
将数据作为DatasProps返回;
};
const form:FormProps[]=[
{
名称:“用户”,
子名称:“名字”,
值:“Marc”,
},
{
名称:“用户”,
子名称:“年龄”,
数值:32,
},
{
名称:“用户”,
子名称:“性别”,
值:'男性',
},
{
姓名:'朋友',
子名称:“名字”,
价值观:“弗兰克”,
},
{
姓名:'朋友',
子名称:“性别”,
值:'男性',
},
{
名称:“汽车”,
值:false,
},
];
log(getDatas(form));
此处的预期结果,对于getDatas(form)
:
{
用户:{
名字:'马克',
年龄:32岁,
性别:'男性'
},
朋友:{
名字:“弗兰克”,
性别:'男性'
},
电话:未定义,
汽车:假的
}
我需要自动执行此操作,因为dataprops
和FormProps
(ProfileProps
取决于FormProps
)可以更改
我希望能够将getDatas
应用到任何具有一个嵌套级别的表单,如FormProps
中所示:
asname
在循环中:key
array[key]
assubName
:subKey
array[key][subKey]
const getDatas = (form: FormProps[]): DatasProps=> {
const datas = form.reduce((acc, field) => {
if (!field.subName) {
datas[field.name] = field.value
continue;
}
if (!acc[field.name]) {
acc[field.name] = {}
}
acc[field.name][field.subName] = field.value
return acc
}, {})
return datas as DatasProps
};
或者使用for循环:
const getDatas = (form: FormProps[]): DatasProps=> {
const datas = {};
for (const field of form) {
if (!field.subName) {
datas[field.name] = field.value
continue;
}
if (!datas[field.name]) {
datas[field.name] = {}
}
datas[field.name][field.subName] = field.value
}
return datas as DatasProps
};