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

193
Vistas
Walking up a file's path backwords

Starting with a string that has the full path of a file I threw together this function to walk up the directories of the file's path backwards. It works, but my gut tells me I'm overcooking the plumbing and I decided that this was a good opportunity for a learning experience. How would I refactor this to be more succinct?

const path = require('path')

function walk(file) {
    let dir = path.dirname(file)
    let arr = dir.split('/').filter(e => e).reverse()
    let paths = []
    for(let i = arr.length; i >= 0; i--) {
        let sub = arr.slice(i)
        paths.push(sub.reverse().join('/'))
    }
    paths = paths.filter(e => e).reverse()
    paths.forEach(path => {
        console.log('/' + path)
    })
}

walk('/D0/D1/D2/D3/foo.bar')
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Another simpler recursive version:

const path = require('path');

function walk(start) {
  const dir = path.dirname(start)
  console.log(dir);
  if (dir !== '/') {
    walk(dir);
  }
}

walk('/D0/D1/D2/D3/foo.bar');

It will output:

"/D0/D1/D2/D3"
"/D0/D1/D2"
"/D0/D1"
"/D0"
"/"
about 4 years ago · Juan Pablo Isaza Denunciar

0

You could use a recursive function.

I let you here an example

const path = require('path')

function walk(file) {
    let dir = path.dirname(file)
    walkRecursively(dir.split('/'))
}

function walkRecursively(dirs) {
  if(dirs.length < 2) {
    return;
  }
  console.log(path.join(dirs))
  const nextDirs = dirs.slice(0, -1)
  walkRecursively(nextDirs)
}

walk('/D0/D1/D2/D3/foo.bar')
about 4 years ago · Juan Pablo Isaza Denunciar

0

you can do something like this

function walk(file) {
    const path = file.split('/').filter(e => e).slice(0, -1)
    const result = path.reduce((res, p, i) => {
      return [
        ...res,
        `${res[i - 1] || ''}/${p}`
      ]
    }, []).reverse()
    console.log(result)
}

walk('/D0/D1/D2/D3/foo.bar')

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