You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改数组内对象的部分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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 23:09:03