如何修改数组内对象的部分key且保持键值对原有顺序不变
你当前使用的解构+剩余属性拼接的写法无法保留原有属性顺序:你把prop1、prop3从对象中解构出来后,...obj收集的是剩余的second、fourth属性,最终生成的新对象顺序会变为first→third→second→fourth,和需求不符。
要在仅修改指定属性名的同时保留原有键顺序,只需要遍历原对象的所有键,对需要替换的键做映射即可,无需手动拆分对象结构,两种常用实现如下:
实现1:for循环遍历(兼容性好)
const data = [ { prop1: 'Change key but keep position', second: 'Keep same key name and position', prop3: 'Change key but keep position', fourth: 'Keep same key name and position', } ] // 定义属性重命名映射表,新增替换规则直接修改这里即可 const keyMap = { prop1: 'first', prop3: 'third' } const res = data.map(item => { const newObj = {} // 按原对象键顺序遍历处理 for (const [key, value] of Object.entries(item)) { const newKey = keyMap[key] || key newObj[newKey] = value } return newObj }) console.log(res)
实现2:Object.fromEntries 简化写法
const keyMap = { prop1: 'first', prop3: 'third' } const res = data.map(item => Object.fromEntries( Object.entries(item).map(([k, v]) => [keyMap[k] || k, v]) ) )
两种写法的运行结果均符合你的预期:
[ { first: 'Change key but keep position', second: 'Keep same key name and position', third: 'Change key but keep position', fourth: 'Keep same key name and position' } ]
内容的提问来源于stack exchange,提问作者Álvaro
相关产品推荐
相关产品推荐

