在 JavaScript 中对对象的键进行排序
Sort the Keys of an Object in JavaScript
要对对象的键进行排序:
- 使用该
Object.keys()
方法获取对象键的数组。 - 调用
sort()
数组上的方法。 - 调用该
reduce()
方法以获取具有已排序键的对象。
索引.js
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
方法获取对象键的数组。
索引.js
const obj = {z: 'three', a: 'one', b: 'two'}; // 👇️ ['z', 'a', 'b'] console.log(Object.keys(obj));
下一步是使用
Array.sort()
方法对键数组进行排序。
索引.js
const obj = {z: 'three', a: 'one', b: 'two'}; // 👇️ ['a', 'b', 'z'] console.log(Object.keys(obj).sort());
此时,我们有一个包含对象键的排序数组。
我们要做的最后一件事是使用
Array.reduce
方法迭代排序的键数组并将每个键值对分配给一个对象。
索引.js
const obj = {z: 'three', a: 'one', b: 'two'}; // 👇️ ['a', 'b', 'z'] console.log(Object.keys(obj).sort()); const sorted = Object.keys(obj) .sort() .reduce((accumulator, key) => { accumulator[key] = obj[key]; return accumulator; }, {}); console.log(sorted); // 👉️ {a: 'one', b: 'two', z: 'three'}
我们传递给reduce()
方法的函数被数组中的每个元素(键)调用。
我们提供了一个空对象作为accumulator
变量的初始值。
在每次迭代中,我们将键值对分配给accumulator
对象并返回结果。
accumulator
我们从第一次迭代返回的结果作为第二次迭代的传递,accumulator
等等。在最后一次迭代之后,该对象包含按排序顺序排列的所有键值对。
确保将一个空对象作为第二个参数传递给该reduce
方法。这是accumulator
变量的初始值。
请注意,此方法不会更改原始对象中键的顺序。它使用排序键创建一个新对象。
Object.keys()
现在您可以使用和
方法迭代排序的对象forEach()
。
索引.js
const obj = {z: 'three', a: 'one', b: 'two'}; // 👇️ ['a', 'b', 'z'] console.log(Object.keys(obj).sort()); const sorted = Object.keys(obj) .sort() .reduce((accumulator, key) => { accumulator[key] = obj[key]; return accumulator; }, {}); Object.keys(sorted).forEach(key => { console.log(key, sorted[key]); // 👉️ a one, b two, z three });
我们传递给forEach()
方法的函数被数组中的每个元素(键)调用。