Javascript 如何将中的对象组合为单个对象角度
嗨,我有一个对象对象,我需要合并到一个对象中 以下是对象的对象:Javascript 如何将中的对象组合为单个对象角度,javascript,angular,Javascript,Angular,嗨,我有一个对象对象,我需要合并到一个对象中 以下是对象的对象: { 0: { 客户端\u电子邮件:空 } 1: { 客户端\u密码:空 } 2: { 客户端\u确认密码:空 } 3: { 客户端名称:null } 4: { 客户端\u LASTNAME:空 } 5: { 移动客户端:空 } 6: { 客户端\家庭电话:空 } 7: { 客户电话:空 } 8: { 客户通过以下方式接收营销信息:[ 0: { 客户端\u ISMARKETINGVIAEMAIL:false } 1: { 客户销售
{
0: {
客户端\u电子邮件:空
}
1: {
客户端\u密码:空
}
2: {
客户端\u确认密码:空
}
3: {
客户端名称:null
}
4: {
客户端\u LASTNAME:空
}
5: {
移动客户端:空
}
6: {
客户端\家庭电话:空
}
7: {
客户电话:空
}
8: {
客户通过以下方式接收营销信息:[
0: {
客户端\u ISMARKETINGVIAEMAIL:false
}
1: {
客户销售电子邮件:false
}
2: {
客户销售电话:false
}
3: {
客户营销偏差:错误
}
]
}
}
此函数递归地将对象的对象合并到单个对象中,但代价太高。时间复杂度约为O(n2log n) (没有测试其他输入tho,因此如果它不适用于所有输入,请告诉我) 实例 在每次迭代中,输出将始终是最内部的对象,分散成单个对象
CLIENTS_RECEIVE_MARKETING_VIA: {
0: {
CLIENTS_ISMARKETINGVIAEMAIL: false,
},
1: {
CLIENTS_ISMARKETINGVIAMAIL: false,
},
2: {
CLIENTS_ISMARKETINGVIAPHONE: false,
},
3: {
CLIENTS_ISMARKETINGVIASMS: {
0: {
CLIENTS_ISMARKETINGVIATEXT: false,
},
1: {
CLIENTS_ISMARKETINGVIAPIC: false,
},
},
},
},
将输出
有趣的递归问题
但是源数据有点奇怪。数组项不是键值对象
应该是:
var a = {
0: {
CLIENTS_EMAIL: null
},
1: {
CLIENTS_PASSWORD: null
},
2: {
CLIENTS_CONFIRMPASSWORD: null
},
3: {
CLIENTS_FIRSTNAME: null
},
4: {
CLIENTS_LASTNAME: null
},
5: {
CLIENTS_MOBILE: null
},
6: {
CLIENTS_HOMEPHONE: null
},
7: {
CLIENTS_BUSPHONE: null
},
8: {
CLIENTS_RECEIVE_MARKETING_VIA: [
{
CLIENTS_ISMARKETINGVIAEMAIL: false
},
{
CLIENTS_ISMARKETINGVIAMAIL: false
},
{
CLIENTS_ISMARKETINGVIAPHONE: false
},
{
CLIENTS_ISMARKETINGVIASMS: false
}
]
}
}
然后使用递归
let result = {};
let convert = (obj) => {
for (var i in obj) {
if (obj[i] != null && obj[i] !== false) {
convert(obj[i]);
} else {
result[i] = obj[i];
}
}
}
回答你的问题了吗?你能提供一个有效的对象吗<代码>客户端通过[0:{…接收营销信息将抛出语法错误(并且您的值后面缺少逗号)@NickParsonsedited@Codenewbie不,这不是我想要的need@vinuta我主要是说你的输入对象Neal不适合我看看这个演示能否帮助你~
var a = {
0: {
CLIENTS_EMAIL: null
},
1: {
CLIENTS_PASSWORD: null
},
2: {
CLIENTS_CONFIRMPASSWORD: null
},
3: {
CLIENTS_FIRSTNAME: null
},
4: {
CLIENTS_LASTNAME: null
},
5: {
CLIENTS_MOBILE: null
},
6: {
CLIENTS_HOMEPHONE: null
},
7: {
CLIENTS_BUSPHONE: null
},
8: {
CLIENTS_RECEIVE_MARKETING_VIA: [
{
CLIENTS_ISMARKETINGVIAEMAIL: false
},
{
CLIENTS_ISMARKETINGVIAMAIL: false
},
{
CLIENTS_ISMARKETINGVIAPHONE: false
},
{
CLIENTS_ISMARKETINGVIASMS: false
}
]
}
}
let result = {};
let convert = (obj) => {
for (var i in obj) {
if (obj[i] != null && obj[i] !== false) {
convert(obj[i]);
} else {
result[i] = obj[i];
}
}
}