Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
matriz de cadenas a la estructura de datos de árbol?

Hay datos devueltos desde el servidor que contienen una matriz de cadenas como una jerarquía como esta:

 var array = [ "house.bedroom.bed", "house.kitchen.spoon", "house.kitchen.knife", "house.bedroom.sofa", "house.bedroom.tv", "plants.trees", "house.birds.parrot.grey" ]

he creado con éxito una estructura de datos de árbol como objeto para hacer que los datos de salida en forma de árbol a continuación:

 house bedroom bed sofa tv kitchen spoon knife birds parrot grey plants trees

¿Y hay alguna forma de elegir una cuerda? por ejemplo, de la "cocina" solicitada, quiero devolver todo lo relacionado con esa cadena como esta:

 house.kitchen.knife house.kitchen.spoon

Aquí los códigos que aprendí:

 function find([key, values], string, temp = []) { var result; temp = temp.concat(key); if (key === string) { return temp.slice(1).join('.'); } values.some(a => result = find(a, string, temp)); return result; } var result = array.reduce((r, s) => { ('root.' + s).split('.').reduce((a, item) => { var array = a.find(([v]) => v === item); if (!array) { a.push(array = [item, []]); } return array[1]; }, r); return r; }, []).pop(); console.log(find(result, 'kitchen')); console.log(result);

mi salida es:

 house.kitchen
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Propongo filtrar la matriz original.

 const data = ["house.bedroom.bed","house.kitchen.spoon", "house.kitchen.knife","house.bedroom.sofa","house.bedroom.tv", "plants.trees","house.birds.parrot.grey"]; const result = data.filter((path) => path.split('.').includes('kitchen')); console.log(result);
 .as-console-wrapper{min-height: 100%!important; top: 0}

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que entiendo lo que estás preguntando. Resolvería este problema con recursividad.

 function parse(items) { return items.reduce((acc, item) => { const k = item.slice(0, item.indexOf('.')) const v = item.slice(item.indexOf('.') + 1).split('.') const newItem = { [k]: v.length > 1 ? parse(v) : v } return Object.assign(acc, newItem) }, { }) }

Esta no es una solución completa, pero debería transmitir la idea general. Para cada elemento de la matriz, divídalo en una clave y un valor. La clave será la cadena antes de la primera . , y el valor con sea la única cadena después de eso . , o un objeto que contiene niños.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda