ES6中如何基于键值对对象生成指定格式的嵌套对象
ES6 对象格式转换实现
不需要手动逐键遍历赋值,借助ES6新增的对象遍历方法,可以非常简洁地完成结构转换,核心实现代码如下:
const target = Object.fromEntries( Object.entries(result).map(([key, value]) => [ key, { name: value, icon: "fa-search" } ]) )
实现逻辑说明
- 调用
Object.entries(result)会把原对象拆解为包含所有键值对的二维数组,原对象中数字形式的键会自动转为字符串格式,和目标对象要求的顶级键格式完全匹配,不需要额外做类型转换。 - 通过数组
map方法遍历每一组键值对,把原有的单值替换为包含name(取原对象对应存储值)、icon(固定值"fa-search")的子对象,全程保留原对象的键不做修改。 - 最后通过
Object.fromEntries把处理后的二维数组重新拼装为标准JS对象,生成的结构和手动逐键书写的效果完全一致,也会严格保留原对象的键顺序。
如果项目运行环境不支持Object.fromEntries,可以用Array.reduce实现完全等价的逻辑:
const target = Object.entries(result).reduce((acc, [key, value]) => { acc[key] = { name: value, icon: "fa-search" } return acc }, {})
内容的提问来源于stack exchange,提问作者TonyStack
相关产品推荐
相关产品推荐

