如何使用JavaScript反转JSON对象的键值对顺序?
如何反转JavaScript对象的键值对顺序?
现有对象:
let obj = { one : 1, two : 2, three : 3 }
期望得到反转键顺序后的对象:
let reversedObj = { three: 3, two : 2, one : 1 }
你之前尝试的代码问题在于,keys.reverse()返回的是反转后的键数组,直接赋值给obj会把原对象替换成数组,自然达不到目标。
正确实现方案
方案1:遍历反转后的键构建新对象
先获取对象的键数组,反转后遍历每个键,把对应键值对添加到新对象中:
let obj = { one : 1, two : 2, three : 3 }; // 获取键数组并反转 const reversedKeys = Object.keys(obj).reverse(); // 构建新对象 const reversedObj = {}; reversedKeys.forEach(key => { reversedObj[key] = obj[key]; }); console.log(reversedObj); // 输出:{ three: 3, two: 2, one: 1 }
方案2:使用Object.fromEntries + Object.entries(ES2019+)
Object.entries会把对象转成键值对数组,反转这个数组后,再用Object.fromEntries转回对象:
let obj = { one : 1, two : 2, three : 3 }; const reversedObj = Object.fromEntries( Object.entries(obj).reverse() ); console.log(reversedObj); // 输出:{ three: 3, two: 2, one: 1 }
注意:这两种方案依赖JavaScript对象的键顺序特性——从ES6开始,对象会保留字符串键的插入顺序,所以反转后的键顺序会被正确保留。如果是数字类型的键,会被自动排序,这个场景不适用。
内容的提问来源于stack exchange,提问作者Aniket Raj
相关产品推荐
相关产品推荐

