Bonjour,

Je débute en JS et NodeJs et je souhaite réaliser une fonction qui liste les fichiers d'un dossier et qui retourne la même structure de ce qui est dans le code ci-dessous et je bloque dessus depuis 2 jours. Si quelqu'un peu m'orienter sur une solution ce serait super sympa

Ce que je souhaite:

const photos = [
  {
    src: "https://source.unsplash.com/2ShvY8Lf6l0/800x599",
    width: 4,
    height: 3
  },
  {
    src: "https://source.unsplash.com/Dm-qxdynoEc/800x799",
    width: 1,
    height: 1
  }
];

Mon code actuel:

const fs = require('fs'); 

var tableau = new Array();

function Image(path, width = 3, height = 4) {
  this.src = path;
  this.width = width;
  this.height =height;
}

function returnList(dir) {
  // Function to get current filenames 
  // in directory 
  fs.readdir(dir, (err, files) => { 
    if (err) 
      console.log(err); 
    else {
      files.forEach(file => { 
        file = "./photos/" + file;
        tableau.push(new Image(file));
      })
    }
  console.log(tableau);
  return tableau;
  }) 
}

var list = returnList('photos');

Ce que mon code retourne actuellement:

[
  Image {
    src: './photos/Annotation 2020-06-30 100959sadfasdfasdf.png',
    width: 3,
    height: 4
  },
  Image { src: './photos/file-1.txt', width: 3, height: 4 },
  Image { src: './photos/file-2.txt', width: 3, height: 4 }
]

Je bloque sur la structure de sortie, je pense que pour le reste je devrais trouver des solutions.

Merci d'avance :-)

2 réponses


Pandazaur
Réponse acceptée

Bonjour,

Il faudrait que tu changes ta fonction Image pour quelque chose comme ça:

function Image(path, width = 3, height = 4) {
    return {
        src: path,
        width,
        height,
    }
}

Hello, super merci de la réponse :-)
En continuant de chercher j'ai trouver une solution moins "pro " qui était

  delete image.constructor.name;

Ce qui allait aussi. Mais je vais utilisé ta solution qui est bien mieux merci de ton aide