Как вернуть несколько значений из рекурсивной функции?
Здравствуйте. Есть рекурсивная функция, которая ходит по файловой системе и возвращает массив с путями к файлам. Вот так это выглядит:
const fs = require('fs').promises ,readdir = (fs.readdir) const scanFile = async (dir, filelist = []) =>{ const files = await readdir(dir); for (let file of files) { const dirFile = path.join(dir, file); try { filelist = await scanFile(dirFile, filelist); } catch (err) { if (err.code === 'ENOTDIR' || err.code === 'EBUSY'){ filelist = [...filelist, dirFile]; //Массив с файлами } else throw err; } } return filelist; }; Мне необходимо получить, помимо массива с путями к файлам, массив путей для директорий. В функцию добавляю пару строк: const stat = await fs.lstat(dirFile); и в цикл: if(stat.isDirectory()){ //arrFolder.push(dirFile); //Массив с папками arrFolder = [...arrFolder, dirFile]; } filelist = await scanFile(dirFile, filelist); Получаю вот такую функцию const scanFile = async (dir, filelist = []) =>{ const files = await readdir(dir); const stat = await fs.lstat(dirFile); for (let file of files) { const dirFile = path.join(dir, file); try { if(stat.isDirectory()){ //arrFolder.push(dirFile); //Массив с папками arrFolder = [...arrFolder, dirFile]; } filelist = await scanFile(dirFile, filelist); } catch (err) { if (err.code === 'ENOTDIR' || err.code === 'EBUSY'){ filelist = [...filelist, dirFile]; //Массив с файлами } else throw err; } } return filelist; }; Теперь я хочу возвращать из функции два значения, а не только “return filelist” Пробую возвращать объект, но функция ломается, потому что, по всей видимости, аргументы перестают правильно передаваться рекурсивно. Пробовал переписать функцию под аргументы в виде объекта, но ничего не вышло. Подскажите пожалуйста, как мне вернуть несколько значений, что то-вроде этого: return{ filelist: filelist, arrFolder: arrFolder } И так, что бы функция не сломалась |
const a = ({ b = [], c }) => { return { f: b, g: c } } const { f, g } = a({ b: ['one'], c: 'two' }) console.log(f, g) |
Часовой пояс GMT +3, время: 16:25. |