Я застреваю, когда передаю необязательный второй параметр в listFiles.Я изо всех сил пытаюсь выяснить, как перечислить файлы в данном подкаталоге.Список файлов в данном каталоге файловой системы, описываемой данными.Таким образом, вы должны иметь возможность вернуть список файлов из данных.
Параметры:
data {Object}
- объект файловой системы, как описано выше
dirName {String}
- имя каталога, из которого должны быть перечислены файлы.
Примечание: Этот параметр является необязательным.Если это не указано, перечислите ВСЕ файлы.
Returns {Array}
Файлы в каталоге dirName, включая подкаталоги.
Подход для выполнения этого упражнения должен использовать рекурсию.Мне удалось вернуть все файлы из объекта файловой системы с кодом ниже:
const fileData = {
dirName: 'app',
files: ['index.html'],
subDirs: [{
dirName: 'js',
files: [
'main.js',
'app.js',
'misc.js',
],
subDirs: [{
dirName: 'vendor',
files: [
'jquery.js',
'underscore.js',
],
subDirs: [],
}, ],
},
{
dirName: 'css',
files: [
'reset.css',
'main.css',
],
subDirs: [],
},
],
};
function listFiles(data, dirName) {
let result = [];
const traverseFileSystem = (obj) => {
Object.keys(obj).forEach((key) => {
if (obj[key] && typeof obj[key] === 'object') {
if (key === 'files') {
result = [...result, ...obj[key]];
}
traverseFileSystem(obj[key]);
}
});
};
traverseFileSystem(data);
console.log(result);
}
listFiles(fileData, 'js');