Estamos usando vue-i18n y mantenemos nuestros mensajes dentro de una variable js. Esto conduce a objetos profundamente anidados o pares clave/valor.
const messages = { en: { message: { page1: { title: "Some title", button: { title: "Foo", }, subpage: { ... } }, ... }, }, de: {...}, };Como puede ver, sin una clasificación adecuada, este archivo será realmente confuso. Mi idea es ordenar alfabéticamente todo el archivo por claves .
¿Hay un algoritmo/código que pueda usarse para esto? ¿O tengo que escribirlo yo mismo?
Puedes hacer algo de recursividad como:
Usé la siguiente respuesta para escribir la función de orden
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))