Hola chicos, tengo una pequeña pregunta sobre un script y una forma de obtener un formato de salida como:
hierarchicalCategories.lvl0 : Womens hierarchicalCategories.lvl1 : Womens > Accessories hierarchicalCategories.lvl2 : Womens > Accessories > Bags hierarchicalCategories.lvl3 : Womens > Accessories > Bags > Sport- & Travel Bags
Mi matriz es simplemente: ["Mujer", "Accesorios", "Bolsos", "Bolsos deportivos y de viaje"]
Así que traté de codificar una función y obtener los datos esperados, pero estoy bloqueado sobre cómo obtener mi posición actual y las primeras posiciones de mi matriz hasta el principio.
let categories = ["Womens", "Accessories", "Bags", "Sport- & Travel Bags"]; let rootName = "hierarchicalCategories.lvl"; const reindexFunction = () => { let current_position = 0; let size = categories.length; for (current_position; current_position < size; current_position++) { let first = rootName + current_position; if (current_position !== 0) { let categ = categories[current_position - 1] + " " + ">" + " " + categories[current_position]; console.log(first+":"+categ); } else { let categ = categories[current_position]; console.log(first+":"+categ); } } }; reindexFunction();
El resultado de esto es:
hierarchicalCategories.lvl0:Womens hierarchicalCategories.lvl1:Womens > Accessories hierarchicalCategories.lvl2:Accessories > Bags hierarchicalCategories.lvl3:Bags > Sport- & Travel Bags
Estoy seguro de que es fácil, pero busqué algún método para hacer esto y no encontré nada. Gracias por su ayuda, consejos.
Simplemente itere sobre las categorías y obtenga las categorías del índice 0 al índice actual. Utilicé los métodos forEach , slice y join de matrices:
Nota: console.log agrega un espacio entre cada argumento de forma predeterminada
let categories = ["Womens", "Accessories", "Bags", "Sport- & Travel Bags"]; let rootName = "hierarchicalCategories.lvl"; categories.forEach((c, i) => console.log(rootName+i, ':', categories.slice(0, i+1).join(' > ')))
La solución más sencilla que se me ocurre sería asignar los índices de la matriz de categories
a las cadenas que se crean al unir todos los elementos de la matriz hasta el índice.
Estoy haciendo esto usando Array.prototype.map
y utilizando el segundo argumento que pasa a la función de devolución de llamada, que es el índice. El primer argumento sería el valor en sí, pero no nos interesa eso, por eso lo llamé _
y no se usa.
No estoy seguro del formato de salida exacto deseado: dijiste transformar matriz, por lo que asumo que el resultado debería ser otra matriz. Pero en caso de que ese no sea el caso, debería ser fácil de ajustar.
const categories = ['Womens', 'Accessories', 'Bags', 'Sport- & Travel Bags'] const rootName = 'hierarchicalCategories.lvl' function buildHierarchicalCategories (categories) { return categories.map((_, i) => `${rootName}${i} : ${categories.slice(0, i + 1).join(' > ')}` ) } console.log(buildHierarchicalCategories(categories))
O simplemente puede mantener las categorías y agregarles
let categories = ["Womens", "Accessories", "Bags", "Sport- & Travel Bags"]; let rootName = "hierarchicalCategories.lvl"; let level = ""; categories.map((e, index) => { level += e; console.log(rootName + index + " : " + level); level += " > "; });