相対ディレクトリ名をとり、ディレクトリとそのすべてのサブディレクトリを繰り返して繰り返し実行する関数を作成しています。ファイル。ファイルのディレクトリ構造の配列を作成するための関数を整える
私はここで行われた作業を開始する:私は、スタンドアローンのアプリを開発していますし、ES6/ES7を利用することができますhttps://gist.github.com/kethinov/6658166
。
次のコードが機能します。しかし、私の主な目標は、自分のコーディングスキルを向上させることであり、より良い方法があるかどうか疑問です。もっと効率的?より機能的ですか?
名前付き関数を.mapに直接移動して矢印関数を使用することはできますが、それは可能ですか?この場合、私は本当に何も返さないので、より簡潔な構文をあまり明確に使用していませんか?私が明示的にそのリターンを返すのではなく、むしろ副作用(?)に頼っているという事実は機能しません。編集4/23/17
const fs = require('fs');
const path = require('path');
function walkSync(dir, array = []) {
function _process(collectionElement) {
const nextJoin = path.join(dir, collectionElement);
array.push(nextJoin.replace(/\\/g, '/'));
if (fs.statSync(nextJoin).isDirectory()) {
walkSync(nextJoin, array);
}
}
fs.readdirSync(dir).map(_process);
return array;
}
console.log(walkSync('directory'));
は、だから私は、次のようにより機能と '純粋な' と考えています。私はまだもっとうまくいくかどうか分かりませんか?
const fs = require('fs');
const path = require('path');
// Builds an array of all directories and files
function processDirectory(content, directory, array) {
const item = path.join(directory, content);
// reformat for Windows environment
array.push(item.replace(/\\/g, '/'));
if (fs.statSync(item).isDirectory()) {
// eslint-disable-next-line no-use-before-define
return walkDirectorySync(item, array);
}
return array;
}
function walkDirectorySync(directory, array = []) {
// node reads the directory SYNCHRONOUSLY (maintains order & BLOCKS)
fs.readdirSync(directory).map(content => processDirectory(content, directory, array));
return array;
}
console.log(walkDirectorySync('world'));