按键字母顺序对深度嵌套的对象排序



我们使用vue-i18n并在js变量中维护我们的消息。这将导致深度嵌套对象或键/值对。

const messages = {
en: {
message: {
page1: {
title: "Some title",
button: {
title: "Foo",
},
subpage: {
...
}
},
...
},
},
de: {...},
};

如你所见,如果没有适当的排序,这个文件将会非常混乱。我的想法是按键按字母顺序对整个文件进行排序.

是否有算法/代码可用于此?还是要我自己写?

你可以做一些递归:

我用下面的答案来写阶函数

const order = (unordered) => Object.keys(unordered).sort().reduce(
(obj, key) => {
obj[key] = unordered[key];
return obj;
}, {}
);
const message = {
fr: {
message: "Bonjour",
a: 1
},
en: {
message: "Hello",
a: {
c: 1,
b: 2
}
},
es: "Hola"
}
const sortObjectDeeply = (object) => {
for (let [key, value] of Object.entries(object)) {
if (typeof(value) === "object") {
object[key] = sortObjectDeeply(value)
}
}
return order(object)
}
console.log(sortObjectDeeply(message))

最新更新