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];
        }
    }
}