Recibo una cadena de ruta de archivo así:
let sampletext="Home/Student/Hello.txt";Y quiero convertir esto en la siguiente estructura dinámicamente. ¿Cómo debo hacer mejor esto?
let idarray=[ { 'id':'Home', 'parent': '', }, { 'id':'Student', 'parent': 'Home', }, { 'id':'Hello.txt', 'parent': 'Student', } ]split en / y luego construirlo desde allí; puede hacerlo de manera concisa con el map :
let sampletext="Home/Student/Hello.txt"; let componentsArr = sampletext.split("/"); let idarray = componentsArr.map(( id, i ) => ({ id, parent: componentsArr[i - 1] || "" })); console.log(idarray); Esto es muy simple: simplemente configure la propiedad id para que sea cualquier valor sobre el que esté iterando actualmente, y luego, si existe un valor anterior (es decir, si este no es el primer elemento/elemento raíz), parent su valor principal en el anterior valor; de lo contrario, es una cadena vacía. Puede eliminar componentsArr y consultar la división n veces, pero en mi opinión, eso es levemente ineficiente.
Aquí tienes:
let sampletext="Home/Student/Hello.txt" let textarr = sampletext.split('/'); let idarray = textarr.map((x, i) => { if(i === 0) return { id: x, parent: '' }; return { id: x, parent: textarr[i - 1] }; }); console.log(idarray);