先上代码
const obj = {z: 'three', a: 'one', b: 'two'};
const sorted = Object.keys(obj)
.sort()
.reduce((accumulator, key) => {
accumulator[key] = obj[key];
return accumulator;
}, {});
console.log(sorted); // 👉️ {a: 'one', b: 'two', z: 'three'}
原理
我们使用
Object.keys
方法获取对象键的数组。
下一步是使用
Array.sort()
方法对键数组进行排序。
此时,我们有一个包含对象键的排序数组。
我们要做的最后一件事是使用
Array.reduce
方法迭代排序的键数组并将每个键值对分配给一个对象。
我们传递给reduce()
方法的函数被数组中的每个元素(键)调用。
我们提供了一个空对象作为accumulator
变量的初始值。
在每次迭代中,我们将键值对分配给accumulator
对象并返回结果。
accumulator
我们从第一次迭代返回的结果作为第二次迭代的传递,accumulator
等等。
在最后一次迭代之后,该对象包含按排序顺序排列的所有键值对。
确保将一个空对象作为第二个参数传递给该reduce
方法。这是accumulator
变量的初始值。
请注意,此方法不会更改原始对象中键的顺序。