Я уже не смог на моем экзамене для этой задачи: (
Я не могу переиграть все вложенные объекты, чтобы получить только файлы .js. «2.JS», «4.JS», «6.JS», «7.JS», «8.JS»] также должен включать «9.JS».mocha.setup("bdd");
let expect = chai.expect;
let assert = chai.assert;
function findAllJavascriptFiles(folder) {
return new Promise((resolve) => {
let jsFiles = [];
function processFolder(f) {
f.read().then((files) => {
const promises = files.map((file) => {
if (typeof file.read === "function") {
return processFolder(file);
}
if (typeof file === "string" ) {
if(file.endsWith(".js")) {
jsFiles.push(file);
}
}
});
Promise.all(promises).then(() => {
resolve(jsFiles);
});
});
}
processFolder(folder);
});
}
describe("let the test started", () => {
it("flat file system", function (done) {
const tests = [
{
root: new Folder(["1.js", "2.js", "3.js", "4.html"]),
expectedResult: ["1.js", "2.js", "3.js"]
},
{
root: new Folder([
"1.js",
"2.js",
new Folder([new Folder(["3.txt"]), "4.js"]),
new Folder(["5.png", "6.js", new Folder(["7.txt"])]),
"8.html"
]),
expectedResult: ["1.js", "2.js", "4.js", "6.js"]
},
{
root: new Folder([
"1.js",
"2.js",
new Folder([new Folder(["3.txt"]), "4.js"]),
new Folder(["5.png", "6.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"7.js",
new Folder([
"7.txt",
new Folder(["5.png", "8.js", new Folder(["7.txt", "9.js"])])
])
]),
"8.html"
]),
expectedResult: ["1.js", "2.js", "4.js", "6.js", "7.js", "8.js", "9.js"]
},
{
root: new Folder([
"1.js",
"2.js",
new Folder([new Folder(["3.txt"]), "4.js"]),
new Folder(["5.png", "6.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"7.js",
new Folder([
"7.txt",
new Folder([
"5.png",
"8.js",
new Folder([
"7.txt",
"9.js",
new Folder([
"11.js",
"12.js",
new Folder([new Folder(["3.txt"]), "14.js"]),
new Folder(["5.png", "16.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"17.js",
new Folder([
"7.txt",
new Folder([
"5.png",
"18.js",
new Folder(["7.txt", "19.js"])
])
])
]),
"8.html",
new Folder([
"21.js",
"22.js",
new Folder([new Folder(["3.txt"]), "24.js"]),
new Folder(["5.png", "26.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"27.js",
new Folder([
"7.txt",
new Folder([
"5.png",
"28.js",
new Folder(["7.txt", "29.js"])
])
])
]),
"8.html"
])
])
])
])
])
]),
"8.html"
]),
expectedResult: [
"1.js",
"11.js",
"12.js",
"14.js",
"16.js",
"17.js",
"18.js",
"19.js",
"2.js",
"21.js",
"22.js",
"24.js",
"26.js",
"27.js",
"28.js",
"29.js",
"4.js",
"6.js",
"7.js",
"8.js",
"9.js"
]
}
];
const testPromises = tests.map(({ root, expectedResult }) => {
return findAllJavascriptFiles(root).then((actualResult) => {
console.log(`RESULT:`, actualResult);
assert.deepEqual(actualResult.sort(), expectedResult.sort());
});
});
Promise.all(testPromises)
.then(() => {
done();
})
.catch((err) => {
console.log("err", err);
done(err);
});
});
});
function Folder(files) {
return {
size: () => {
return new Promise((res) => {
res(files.length);
});
},
read: () => {
return new Promise((res) => {
res(files);
});
}
};
}
mocha.run();
Подробнее здесь: https://stackoverflow.com/questions/795 ... nstructors
Проблема рекурсии, пересекающая глубоко вложенные конструкторы функции ⇐ Javascript
Форум по Javascript
1744266663
Anonymous
Я уже не смог на моем экзамене для этой задачи: (
Я не могу переиграть все вложенные объекты, чтобы получить только файлы .js. «2.JS», «4.JS», «6.JS», «7.JS», «8.JS»] также должен включать «9.JS».mocha.setup("bdd");
let expect = chai.expect;
let assert = chai.assert;
function findAllJavascriptFiles(folder) {
return new Promise((resolve) => {
let jsFiles = [];
function processFolder(f) {
f.read().then((files) => {
const promises = files.map((file) => {
if (typeof file.read === "function") {
return processFolder(file);
}
if (typeof file === "string" ) {
if(file.endsWith(".js")) {
jsFiles.push(file);
}
}
});
Promise.all(promises).then(() => {
resolve(jsFiles);
});
});
}
processFolder(folder);
});
}
describe("let the test started", () => {
it("flat file system", function (done) {
const tests = [
{
root: new Folder(["1.js", "2.js", "3.js", "4.html"]),
expectedResult: ["1.js", "2.js", "3.js"]
},
{
root: new Folder([
"1.js",
"2.js",
new Folder([new Folder(["3.txt"]), "4.js"]),
new Folder(["5.png", "6.js", new Folder(["7.txt"])]),
"8.html"
]),
expectedResult: ["1.js", "2.js", "4.js", "6.js"]
},
{
root: new Folder([
"1.js",
"2.js",
new Folder([new Folder(["3.txt"]), "4.js"]),
new Folder(["5.png", "6.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"7.js",
new Folder([
"7.txt",
new Folder(["5.png", "8.js", new Folder(["7.txt", "9.js"])])
])
]),
"8.html"
]),
expectedResult: ["1.js", "2.js", "4.js", "6.js", "7.js", "8.js", "9.js"]
},
{
root: new Folder([
"1.js",
"2.js",
new Folder([new Folder(["3.txt"]), "4.js"]),
new Folder(["5.png", "6.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"7.js",
new Folder([
"7.txt",
new Folder([
"5.png",
"8.js",
new Folder([
"7.txt",
"9.js",
new Folder([
"11.js",
"12.js",
new Folder([new Folder(["3.txt"]), "14.js"]),
new Folder(["5.png", "16.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"17.js",
new Folder([
"7.txt",
new Folder([
"5.png",
"18.js",
new Folder(["7.txt", "19.js"])
])
])
]),
"8.html",
new Folder([
"21.js",
"22.js",
new Folder([new Folder(["3.txt"]), "24.js"]),
new Folder(["5.png", "26.js", new Folder(["7.txt"])]),
new Folder([
"5.png",
"27.js",
new Folder([
"7.txt",
new Folder([
"5.png",
"28.js",
new Folder(["7.txt", "29.js"])
])
])
]),
"8.html"
])
])
])
])
])
]),
"8.html"
]),
expectedResult: [
"1.js",
"11.js",
"12.js",
"14.js",
"16.js",
"17.js",
"18.js",
"19.js",
"2.js",
"21.js",
"22.js",
"24.js",
"26.js",
"27.js",
"28.js",
"29.js",
"4.js",
"6.js",
"7.js",
"8.js",
"9.js"
]
}
];
const testPromises = tests.map(({ root, expectedResult }) => {
return findAllJavascriptFiles(root).then((actualResult) => {
console.log(`RESULT:`, actualResult);
assert.deepEqual(actualResult.sort(), expectedResult.sort());
});
});
Promise.all(testPromises)
.then(() => {
done();
})
.catch((err) => {
console.log("err", err);
done(err);
});
});
});
function Folder(files) {
return {
size: () => {
return new Promise((res) => {
res(files.length);
});
},
read: () => {
return new Promise((res) => {
res(files);
});
}
};
}
mocha.run();
Подробнее здесь: [url]https://stackoverflow.com/questions/79565880/recursion-problem-traversing-deeply-nested-function-constructors[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия