javascript - 我如何接受不同数量的论点?

标签 javascript node.js

所以我有这个 Discord 机器人,它带有一个添加链接/密码组合的命令。目前它只能接受两个参数,但我有一些用户想要粘贴整个链接/密码列表并一次将它们全部输入。

这是我现在的代码:

if (command === "add"){
message.delete();
let link = message.content.split(" ")[1];
let answer = message.content.split(" ")[2];
  if (!link || !answer){
  user.send('Please be sure to enter a link **and** its corresponding answer.');
  }
lockers.push({"link":link,"answer":answer});
fs.writeFile('./serverLockers.json', JSON.stringify(serverLockers), (err) => {if(err) console.error(err)});
return;
}

本例中的消息将是字符串“[command] [link] [answer]”。

我希望能够执行类似“[命令] [链接] [答案]、[链接] [答案]、[链接] [答案]”的操作

如何更改此设置以一次添加多个组合? 它必须知道输入了多少个组合 并且输入的组合数量总是会有所不同

最佳答案

如果内容中没有嵌入逗号,并且 message.content 中的格式如下:

"command1 link1 answer1, link2 answer2, link3 answer3"

那么你可以先解析命令,然后用逗号分割,然后用空格分割每个命令。

let message = {};
message.content =  "command1 link1 answer1, link2 answer2, link3 answer3";

let lockers = [];

// get command off the beginning
let index = message.content.indexOf(" ");
let command = message.content.slice(0, index);

// get remaining content and split it into link answer combos
let args = message.content.slice(index + 1).split(/\s*,\s*/);
// args.length is the number of combos entered
args.forEach(function(item) {
    let splits = item.split(/\s+/);
    let link = splits[0];
    let answer = splits[1];

    // code here for processing each link/answer combo (not sure what you want to do with them)
    lockers.push({"link":link,"answer":answer});
});
// final code to process lockers array
console.log("command = ", command);
console.log(lockers);

关于javascript - 我如何接受不同数量的论点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44272496/

相关文章:

javascript - 在 includes() 中使用 "OR"运算符来试验字符串中是否存在任何子字符串?

javascript - 如何通过 Javascript 更改 TextBox 的背景颜色?

javascript - Promise 错误处理基础知识

javascript - d3.js 词云中元素的重叠

node.js - 从 leveldb 或 redis 中提取一系列键

javascript - 使用 angular/node/javascript 将 Twitter Feed 作为 JSON (tweeter scraper)

javascript - 运行 Q Promise 并连续获取进度

javascript - 如何使用其他自定义指令中的元素标签作为另一个自定义指令的模板

javascript - window.open ("c:\test.txt") 来自 Silverlight

javascript - Webpack Hook 可动态更改 SCSS 导入