for(i in array) 更新了吗?
Does the for(i in array) update?
好的,我有这个代码
var cwd = __dirname;
var files = fs.readdirSync(__dirname);
for(var i in files){
if(fs.lstatSync(files[i]).isDirectory(path.join(cwd, files[i]))){
var cur = fs.readdirSync(path.join(cwd, files[i]));
for(var j in cur){
files.push(path.join(files[i], cur[j]));
}
}
}
console.log(files);
此代码检查 files[i]
的路径是否为目录,如果是,则获取该目录的内容并将其存储在变量 cur
中。然后它解析 cur
,并将其内容添加到 files
。但是,当它记录 files
时,我得到了目录。这是因为 for
循环只在循环开始时获取 files
的内容吗?有没有办法让循环更新到 files
的当前内容?
for in
只取进入循环前存在的索引。
您可以改用 while
。
var i=0
while (files[i]){
if(fs.lstatSync(files[i]).isDirectory(path.join(cwd, files[i]))){
var cur = fs.readdirSync(path.join(cwd, files[i]));
for(var j in cur){
files.push(path.join(files[i], cur[j]));
}
}
i++
}
好的,我有这个代码
var cwd = __dirname;
var files = fs.readdirSync(__dirname);
for(var i in files){
if(fs.lstatSync(files[i]).isDirectory(path.join(cwd, files[i]))){
var cur = fs.readdirSync(path.join(cwd, files[i]));
for(var j in cur){
files.push(path.join(files[i], cur[j]));
}
}
}
console.log(files);
此代码检查 files[i]
的路径是否为目录,如果是,则获取该目录的内容并将其存储在变量 cur
中。然后它解析 cur
,并将其内容添加到 files
。但是,当它记录 files
时,我得到了目录。这是因为 for
循环只在循环开始时获取 files
的内容吗?有没有办法让循环更新到 files
的当前内容?
for in
只取进入循环前存在的索引。
您可以改用 while
。
var i=0
while (files[i]){
if(fs.lstatSync(files[i]).isDirectory(path.join(cwd, files[i]))){
var cur = fs.readdirSync(path.join(cwd, files[i]));
for(var j in cur){
files.push(path.join(files[i], cur[j]));
}
}
i++
}