Estoy creando un directorio de carpetas y necesito permitir que los usuarios naveguen dentro de él. Tengo una variable global que almacena su ubicación en el directorio. ¿Cómo puedo acceder al contenido dentro de su carpeta seleccionada?
Esto es lo que yo qué.
let location = ["2022","March","Week4"]; let content = folderInformation["2022"]["March"]["Week4"];Sin embargo, los nombres de archivo "2022, marzo, semana 4, ect" los establece el usuario.
Así que podría hacer esto.
let location = ["2022","March","Week4"]; let layer1 = location[0]; let layer2 = location[1]; let layer3 = location[2]; let content = folderInformation[layer1][layer2][layer3];Sin embargo, el usuario podría tener 2 capas de profundidad o 15.
Lo intenté
let layers = location.join("]["); let content = folderInformation[layers];y
let layers = "["+location.join("][")+"]"; let content = folderInformation+layers;sin exito ¿Cuál es la mejor opción para acceder al contenido dentro del objeto?
Una versión corta con reducir:
const content = location.reduce((o,l)=>o?.[l],folderinformation);Recorra su matriz de locations y acceda a cada ubicación en el objeto de información de folderInformation una por una. De esta manera irás un nivel más profundo con cada iteración.
function getFolderInformation(folderInformation, locations) { let currentLocation = folderInformation; for (const location of locations) { if (location in currentLocation) { currentLocation = currentLocation[location]; } } return currentLocation; } const folderInformation = { '2022': { 'Februari': { 'Week1': { title: 'Nope', description: 'Not this one' } }, 'March': { 'Week3': { title: 'Also no', description: 'Wrong' }, 'Week4': { title: 'Foo', description: 'Bar' }, } } }; let locations = ["2022", "March", "Week4"]; let content = getFolderInformation(folderInformation, locations); console.log(content);