如何移除JavaScript对象外层键并转为子对象的id属性
问题描述
我有一个如下所示的JavaScript对象:
{ "xx2b": { "county": "Baringo", "town": "Kabarnet", "saccoRegistration": "BO2/08/009", "saccoName": "Baringo2" }, "QQDa": { "saccoRegistration": "Ba/09/009", "town": "Mogotio", "county": "Baringo", "saccoName": "Baringo1" } }
我希望将其转换为移除每个子对象的外层键,并将该键作为id属性添加到对应子对象中。注意:你给出的示例外层用大括号包裹多个对象是无效JSON结构,正确结构应为数组,目标格式如下:
[ { "id": "xx2b", "county": "Baringo", "town": "Kabarnet", "saccoRegistration": "BO2/08/009", "saccoName": "Baringo2" }, { "id": "QQDa", "saccoRegistration": "Ba/09/009", "town": "Mogotio", "county": "Baringo", "saccoName": "Baringo1" } ]
解决方案
可以用JavaScript的Object.entries()结合map()方法快速实现转换:
// 原始对象 const originalObj = { "xx2b": { "county": "Baringo", "town": "Kabarnet", "saccoRegistration": "BO2/08/009", "saccoName": "Baringo2" }, "QQDa": { "saccoRegistration": "Ba/09/009", "town": "Mogotio", "county": "Baringo", "saccoName": "Baringo1" } }; // 转换逻辑 const transformedArray = Object.entries(originalObj).map(([id, item]) => ({ id, ...item })); console.log(transformedArray);
代码说明
Object.entries(originalObj):把原始对象拆成键值对数组,每一项格式为[外层键, 子对象],比如["xx2b", {...}]。map(([id, item]) => {...}):遍历键值对数组,解构出id(原外层键)和item(子对象),返回一个新对象,合并id属性和子对象的所有属性。- 扩展运算符
...item直接把子对象的所有属性复制到新对象里,不用手动逐个添加属性。
内容的提问来源于stack exchange,提问作者Steve Gaita
相关产品推荐
相关产品推荐

