Я борюсь за то, как увеличить базовый счетчик в javascript.
Чего я хочу достичь?
Мне нужен счетчик внутри цикла foreach
.Цель состоит в том, чтобы иметь возможность подсчитывать каждый раз, когда срабатывает //Write smthg
.
Ниже приведена обновленная версия кода, который я использую.На данный момент он возвращает странные последовательности чисел.Я думаю, это сбрасывается каждый раз, когда запускается рекурсивный циклЯ не знаю, как это исправить, предположим, что это основная проблема с javascript, но поскольку я учусь на экспериментах и самостоятельно, мне иногда приходится задавать вопрос сообществу.
function walk(dir, counter = 0) {
fs.readdirSync(dir).forEach(file => {
let fullPath = path.join(dir, file);
if (fs.lstatSync(fullPath).isDirectory()) {
counter = walk(fullPath, counter);
walk(fullPath, counter);
console.log('dir');
} else {
let size = fs.statSync(fullPath).size; // Get size of file
listFiles.write(fullPath + " (" + size + ")\n"); // Write file path and size into copyList.xml
++counter;
console.log(counter);
}
});
return counter;
}
walk(copyFrom); // Starts function "walk"
Полученные последовательности:
2,3,4,5,6,7,dir,5,6,8,9,10,11,12,13,dir,11
Вот полный ответ
function walk(dir) {
let n = 0;
function walk(dir) {
fs.readdirSync(dir).forEach(file => {
++n;
console.log(n);
let fullPath = path.join(dir, file);
if (fs.lstatSync(fullPath).isDirectory()) {
--n;
walk(fullPath);
console.log('dir');
} else {
let size = fs.statSync(fullPath).size; // Get size of file
listFiles.write(fullPath + " (" + size + ")\n"); // Write file path and size into copyList.xml
}
});
}
return walk(dir);
}