JavaScript遍历嵌套对象生成指定结构新对象的实现问题
解决嵌套对象遍历并生成指定结构对象的问题
你的代码主要有三个问题:
Object.entries返回的是[键名, 对应值]形式的数组,直接用item.id无法获取到嵌套对象的属性,得取数组的第二个元素(也就是嵌套的对象)- 访问
section属性时语法错误,section.[item.id]多了个多余的点,正确写法是section[目标id] map返回的是数组结构,但你需要的是对象,得用Object.fromEntries把数组转回对象
正确代码实现
const res = {0 : {id: "id1", name: "name1" , rollno: "1"}, 1 : {id: "id2", name: "name2", rollno: "2"}} const section = {"id1" : "section A", "id3" : "section B"} const result = Object.fromEntries( Object.entries(res).map(([key, obj]) => { return [ key, { id: obj.id, name: obj.name, section: section[obj.id] } ] }) ) console.log(result) // 输出结果: // { // 0: { id: 'id1', name: 'name1', section: 'section A' }, // 1: { id: 'id2', name: 'name2', section: undefined } // }
代码说明
Object.entries(res)将原对象转换为[[键名, 嵌套对象], ...]格式的数组- 用
map遍历数组,通过解构直接拿到原对象的键名(0、1)和对应的嵌套对象 - 为每个嵌套对象生成包含
id、name、section的新对象,section通过嵌套对象的id去section中查找,不存在的id会自动返回undefined Object.fromEntries将处理后的数组重新转换为对象,得到你期望的结构
内容的提问来源于stack exchange,提问作者hightides1973
相关产品推荐
相关产品推荐

