如果子数组具有动态键值对对象,则在javascript中展平数组对象
如何获取此数组的平面数组对象?我想将“所有关键点”值从子数组对象移动到其父对象:如果子数组具有动态键值对对象,则在javascript中展平数组对象,javascript,typescript,Javascript,Typescript,如何获取此数组的平面数组对象?我想将“所有关键点”值从子数组对象移动到其父对象: [ { "Attributes": [ { "Name": "profile", "Value": "UI" }, { "Name": "phone_number", "Value": "+91123456789" }, { "Name": "email",
[
{
"Attributes": [
{
"Name": "profile",
"Value": "UI"
},
{
"Name": "phone_number",
"Value": "+91123456789"
},
{
"Name": "email",
"Value": "to_test@test.in"
}
],
"UserCreateDate": 1524465619.163,
"Username": "neeraj"
}
]
必需的JSON:
[
{
"UserCreateDate": 1524465619.163,
"Username": "neeraj",
"profile": "UI",
"phone_number": "+91123456789",
"email": "to_test@test.in"
}
]
可以使用迭代对象键/值的递归函数展平:
const输入={
“PaginationToken”:“字符串”,
“用户”:[{
“属性”:[{
“名称”:“字符串”,
“值”:“字符串”
}],
“已启用”:“布尔值”,
“MFA选项”:[{
“AttributeName”:“字符串”,
“DeliveryMedium”:“字符串”
}],
“UserCreateDate”:“编号”,
“UserLastModifiedDate”:“编号”,
“用户名”:“字符串”,
“用户状态”:“字符串”
}]
};
const getKeyValsFromObj=(obj)=>Object.entries(obj)
.reduce((累计,[键,值])=>{
if(数组.isArray(值)){
forEach(innerObj=>accum=[…accum,…getKeyValsFromObj(innerObj)]);
}否则累计推送([键,值]);
返回累计;
}, []);
const keyvals=getKeyValsFromObj(输入);
const finalObj=keysVals.reduce((对象[key,val])=>{
obj[key]=val;
返回obj;
}, {});
console.log(finalObj)代码>您可以使用迭代对象的键/值的递归函数展平:
const输入={
“PaginationToken”:“字符串”,
“用户”:[{
“属性”:[{
“名称”:“字符串”,
“值”:“字符串”
}],
“已启用”:“布尔值”,
“MFA选项”:[{
“AttributeName”:“字符串”,
“DeliveryMedium”:“字符串”
}],
“UserCreateDate”:“编号”,
“UserLastModifiedDate”:“编号”,
“用户名”:“字符串”,
“用户状态”:“字符串”
}]
};
const getKeyValsFromObj=(obj)=>Object.entries(obj)
.reduce((累计,[键,值])=>{
if(数组.isArray(值)){
forEach(innerObj=>accum=[…accum,…getKeyValsFromObj(innerObj)]);
}否则累计推送([键,值]);
返回累计;
}, []);
const keyvals=getKeyValsFromObj(输入);
const finalObj=keysVals.reduce((对象[key,val])=>{
obj[key]=val;
返回obj;
}, {});
console.log(finalObj)
您可以使用数组#映射
遍历数组,然后使用数组#映射
遍历属性
并使用对象。分配
以键值格式创建包含所有键和属性
对象的对象,并返回此对象
const data=[{“Attributes”:[{“Name”:“profile”,“Value”:“UI”},{“Name”:“phone_number”,“Value”:“+91123456789”},{“Name”:“email”,“Value”:“to”_test@test.in“}],“UserCreateDate”:1524465619.163,“Username”:“neeraj”}],
结果=data.map({Attributes,UserCreateDate,Username})=>Object.assign({UserCreateDate,Username};
控制台日志(结果)
您可以使用数组#映射
遍历数组,然后使用数组#映射
遍历属性
并使用对象。分配
以键值格式创建包含所有键和属性
对象的对象,并返回此对象
const data=[{“Attributes”:[{“Name”:“profile”,“Value”:“UI”},{“Name”:“phone_number”,“Value”:“+91123456789”},{“Name”:“email”,“Value”:“to”_test@test.in“}],“UserCreateDate”:1524465619.163,“Username”:“neeraj”}],
结果=data.map({Attributes,UserCreateDate,Username})=>Object.assign({UserCreateDate,Username};
控制台日志(结果)代码>请分享预期输出的外观:嵌套Json:[{“Attributes”:[{“Name”:“email”,“Value”:to@to.com“},{”Name:“username”,“Value:“Jack”}],“Enabled”:true,“UserCreateDate”:1524491609.287}]必需的JSON:[{“电子邮件”:to@to.com“,”用户名“:”Jack“,”Enabled“:true,“UserCreateDate”:1524491609.287,“UserLastModifiedDate”:1524492105.53,“UserStatus:”强制更改密码“,”用户名“:”sachhida“}]在人们完成这项工作并提交答案后,您完全更改了问题。我只是删除了我的。祝你好运。请分享预期输出的样子我希望是这样的:嵌套Json:[{“Attributes”:[{“Name”:“email”,“Value”:to@to.com“},{”Name:“username”,“Value:“Jack”}],“Enabled”:true,“UserCreateDate”:1524491609.287}]必需的JSON:[{“电子邮件”:to@to.com“,”用户名“:”Jack“,”Enabled“:true,“UserCreateDate”:1524491609.287,“UserLastModifiedDate”:1524492105.53,“UserStatus:”强制更改密码“,”用户名“:”sachhida“}]在人们完成这项工作并提交答案后,您完全更改了问题。我只是删除了我的。祝你好运。示例Json当前Json=[{“Attributes”:[{“Name”:“profile”,“Value”:“UI”},{“Name”:“phone_number”,“Value”:“+91123456789”},{“Name”:“email”,“Value”:“to”_test@test.in“}],“UserCreateDate”:1524465619.163,“用户名”:“neeraj”}]必需的JSON:[{“UserCreateDate”:1524465619.163,“用户名”:“neeraj”,“配置文件”:“UI”,“电话号码”:“+91123456789”,“电子邮件”:“收件人”_test@test.in“}]示例Json当前Json=[{”属性“:[{”名称“:“配置文件”,“值”:“UI”},{”名称“:“电话号码”,“值”:“+91123456789”},{”名称“:“电子邮件”,“值”:“收件人”_test@test.in}],“UserCreateDate”:1524465619.163,“Username”:“neeraj”}]必需的JSON:[{“UserCreateDate”:1524465619.163,“用户名”:“neeraj”,“个人资料”:“用户界面”,“电话号码”:“+91123456789”,“电子邮件”:“收件人”_test@test.in" } ]