如何在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
相关产品推荐
相关产品推荐

