【问题标题】:Parsing multiple arguments from the command line Node.js/js从命令行 Node.js/js 解析多个参数
【发布时间】:2019-07-10 19:13:36
【问题描述】:

我正在尝试编写一个程序,它接受任意数量的命令行参数,在这种情况下,是字符串并将它们反转,然后将它们输出到控制台。这是我目前所拥有的:

let CL = process.argv.slice(2);
let extract = CL[0];

function reverseString(commandInput) {
  var newString = "";
  for (var i = commandInput.length - 1; i >= 0; i--) {
    newString += commandInput[i];
  }
  return console.log(newString);
}

let call = reverseString(extract);

我想不出一种方法让命令行中的多个参数都可以使用,例如:

node reverseString.js numberOne numberTwo

这将导致如下输出:

enOrebmun owTrebmun 

但它适用于单个参数,例如:

node reverseString.js numberOne

【问题讨论】:

  • 不清楚你想要得到什么结果。也许CL.join(" ").reverse().
  • let calls = CL.map(reverseString); 然后记录它们,如果你愿意的话:console.log(calls.join("\n"));
  • 您只需对CL - for (const x in CL) { console.log(reverseString(x)) }中的每个项目执行操作
  • 您应该将return console.log(newString) 更改为return newString - console.log 不会返回任何内容。

标签: javascript arrays node.js command-line


【解决方案1】:

您需要对传入的每个 argv[n...] 值运行 reverseString() 函数。正确应用 Array.prototype.splice(2) 函数后,该函数将删除数组索引 0 和 1(包含命令(@ 987654325@) 和/path/to/module/file.js),您需要遍历数组中的每个剩余索引。

Array.prototype.forEach 方法非常适合这种情况,而不需要 for 循环或映射。下面是使用 OP 代码,是所需输出所需的最小程序(无需太多重构)。

    let CL = process.argv.slice(2);

    function reverseString(commandInput) {
      var newString = "";
      for (var i = commandInput.length - 1; i >= 0; i--) {
        newString += commandInput[i];
      }
      return console.log(newString);
    }

    CL.forEach((extract)=>reverseString(extract))

这是我从终端运行的代码:

【讨论】:

    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2013-03-21
    • 2013-03-06
    • 2021-12-07
    相关资源
    最近更新 更多