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

如何在JavaScript中按自定义键顺序重排数组内对象的键值对?

JavaScript中重新排列对象数组键顺序的最佳方法

需求说明

原始对象数组:

[
  { "data1": "-", "data2": "-", "data3": "test", "data4": "20.0¢/min" },
  { "data1": "-", "data2": "-", "data3": "test", "data4": "20.0¢/min" },
  { "data1": "-", "data2": "-", "data3": "test", "data4": "20.0¢/min" }
]

需要将每个对象的键按data3→data1→data4→data2的顺序重新排列,得到目标数组:

[
  { "data3": "test", "data1": "-", "data4": "20.0¢/min", "data2": "-" },
  { "data3": "test", "data1": "-", "data4": "20.0¢/min", "data2": "-" },
  { "data3": "test", "data1": "-", "data4": "20.0¢/min", "data2": "-" }
]

实现方案

方案一:指定键顺序通用写法

适合键数量较多或需要动态调整顺序的场景,灵活性强:

// 原始数组
const originalArray = [
  { "data1": "-", "data2": "-", "data3": "test", "data4": "20.0¢/min" },
  { "data1": "-", "data2": "-", "data3": "test", "data4": "20.0¢/min" },
  { "data1": "-", "data2": "-", "data3": "test", "data4": "20.0¢/min" }
];

// 定义需要的键顺序
const desiredKeyOrder = ["data3", "data1", "data4", "data2"];

// 遍历数组并重新构建对象
const rearrangedArray = originalArray.map(obj => {
  return desiredKeyOrder.reduce((newObj, key) => {
    newObj[key] = obj[key];
    return newObj;
  }, {});
});

方案二:解构赋值简化写法

如果键的数量较少,直接用对象解构+字面量的方式更简洁直观:

const rearrangedArray = originalArray.map(({ data3, data1, data4, data2 }) => ({
  data3,
  data1,
  data4,
  data2
}));

注意事项

  • ES6及以上的JavaScript规范中,对象的键会保持插入顺序(数字类型键除外),上述方法在现代浏览器、Node.js等主流环境中都能稳定生效。
  • 如果需要兼容ES5及更早的环境,建议优先使用第一种方案,或者确保代码运行环境支持ES6+特性。

内容的提问来源于stack exchange,提问作者barry allen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:01:15