使用 27x26 创建文件夹结构,即所有字母表的深度为 26
Creating folder structure with 27x26 i.e of all alphabet with 26 deep level
我想创建文件夹结构 27X26 即
A/A/B..Z
B/A/B..Z
C/A/B..Z
.
.
Z/A/B..Z
我正在尝试以下代码,但它不起作用。
var fs=require('fs'),
path=require('path');
var arr=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
var itr=0;
function createAtZ(pth){
if(pth){
if(itr<676){
for(let i=0;i<26;i++){
dir = path.join(__dirname,pth+'/'+arr[i]);
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
}
for(let i=0;i<26;i++){
createAtZ(pth+'/'+arr[i])
}
}
}
itr++;
}
for(var i=0;i<26;i++){
createAtZ('./');
}
它只在 A 目录中创建子文件夹。
let fs = require("fs");
let path = require("path");
function getLetter(n) {
return String.fromCharCode("A".charCodeAt(0) + n);
}
function createDirIfNotExist(dir) {
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
}
function createAt(dir) {
dir = path.join(__dirname, dir);
createDirIfNotExist(dir);
for (let i = 0; i < 26; i++) {
dir = path.join(dir, getLetter(i));
createDirIfNotExist(dir);
}
}
for (let i = 0; i < 26; i++) {
createAt(getLetter(i));
}
getLetter
函数允许您获取每个字母而无需输入每个字母。 createAt
从给定文件夹开始创建 A/B/.../Z
结构。底部的循环在每个字母 A..Z
.
上调用 createAt
在您的代码中,itr
是一个全局变量。如果循环的每次迭代都使用一个变量 0...26
而不是全局变量 0...676
,将会更加清晰和简单。您正在尝试使用递归,但如果您想这样做,您应该只在每次迭代结束时调用 createAtZ
一次。例如:
function createAt(dir) {
dir = path.join(__dirname, dir);
createDirIfNotExist(dir);
createAtRecursive(dir, 0);
}
function createAtRecursive(dir, itr) {
if (itr < 26) {
dir = path.join(dir, getLetter(itr);
createDirIfNotExist(dir);
createAtRecursive(dir, itr + 1);
}
}
通过这种方式,可以更轻松地跟踪您的变量,因为它们对于函数的每次调用都是不同的。
我想创建文件夹结构 27X26 即
A/A/B..Z
B/A/B..Z
C/A/B..Z
.
.
Z/A/B..Z
我正在尝试以下代码,但它不起作用。
var fs=require('fs'),
path=require('path');
var arr=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
var itr=0;
function createAtZ(pth){
if(pth){
if(itr<676){
for(let i=0;i<26;i++){
dir = path.join(__dirname,pth+'/'+arr[i]);
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
}
for(let i=0;i<26;i++){
createAtZ(pth+'/'+arr[i])
}
}
}
itr++;
}
for(var i=0;i<26;i++){
createAtZ('./');
}
它只在 A 目录中创建子文件夹。
let fs = require("fs");
let path = require("path");
function getLetter(n) {
return String.fromCharCode("A".charCodeAt(0) + n);
}
function createDirIfNotExist(dir) {
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
}
function createAt(dir) {
dir = path.join(__dirname, dir);
createDirIfNotExist(dir);
for (let i = 0; i < 26; i++) {
dir = path.join(dir, getLetter(i));
createDirIfNotExist(dir);
}
}
for (let i = 0; i < 26; i++) {
createAt(getLetter(i));
}
getLetter
函数允许您获取每个字母而无需输入每个字母。 createAt
从给定文件夹开始创建 A/B/.../Z
结构。底部的循环在每个字母 A..Z
.
createAt
在您的代码中,itr
是一个全局变量。如果循环的每次迭代都使用一个变量 0...26
而不是全局变量 0...676
,将会更加清晰和简单。您正在尝试使用递归,但如果您想这样做,您应该只在每次迭代结束时调用 createAtZ
一次。例如:
function createAt(dir) {
dir = path.join(__dirname, dir);
createDirIfNotExist(dir);
createAtRecursive(dir, 0);
}
function createAtRecursive(dir, itr) {
if (itr < 26) {
dir = path.join(dir, getLetter(itr);
createDirIfNotExist(dir);
createAtRecursive(dir, itr + 1);
}
}
通过这种方式,可以更轻松地跟踪您的变量,因为它们对于函数的每次调用都是不同的。