【问题标题】:Node.js Why will it only print one at a timeNode.js 为什么一次只打印一个
【发布时间】:2016-02-17 21:22:14
【问题描述】:

我正在使用 node.js 列出 txt 文件中的项目。我让它从终端打印出来,但是我希望它接受更多参数,到目前为止它接受它们但只打印一个(最后一个)我希望它打印参数中的每个项目并将它们列出。

// Make sure we got a filename on the command line.
if (process.argv.length < 3) {
  console.log('Usage: node ' + process.argv[1] + ' FILENAME');
  process.exit(1);
}
// Read the file and print its contents. And split into an array after each space
var fs = require('fs') , filename = process.argv[2];
var array = fs.readFileSync('dependencies.txt').toString().split('\n');
	//console.log(array[0]);

   


if(process.argv.length >= 3){
  for(var j = 3; j < process.argv.length; j++)
  var test = process.argv[j];
  functionName(test);
}
  



function functionName(test){    
  for(var i = 0; i < array.length; i++ ){
   var pattern = /([^\s]+)/g;
   var line = pattern.exec(array[i]);
 if(line && test == line[0]){
 console.log(array[i]);
    }
  }
}




//fs.readFile(filename, 'utf8', function(err, data) {
 // if (err) throw err;
 // console.log('OK: ' + filename);
 // console.log(data)
//});

how it prints out

【问题讨论】:

  • 您是否希望为该循环的每次迭代调用一次functionName?因为那不是你在做什么。而functionName(test); 在循环完成后发生。
  • 是的,我需要它来运行并打印在终端中调用的每个项目
  • 所以当你有一个多行的for循环时,请使用正确的{}。或通过删除 var test 行使其成为单行。
  • 我现在找到你了。谢谢老兄,我一直盯着这个看很久了

标签: javascript node.js terminal


【解决方案1】:

for 循环只能包含一条语句,因此如果您需要多个语句,则必须将其包装在 block statement 中。
(感谢@paulpro)

我只想为所有 for 循环添加一个块语句,这样更易​​读,除非它足够短,可以在一行上阅读。

for(var j = 3; j < process.argv.length; j++) {
  //var test = process.argv[j];
  functionName(process.argv[j]);
}
let len = process.argv.length, j = 3;
for (;j<len;j++) functionName(process.argv[j]);

【讨论】:

  • 具体来说,一个 for 循环总是只包含一个语句,无论是多行还是一行,或者与循环头在同一行。如果您想在一个循环中使用多个语句,则需要使用block statement
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多