JS函数中如何调用多变量数组?

How to call multi variable array in JS function?

我正在使用此功能 select 下拉菜单中的一项:

async selectNode(nodeType, nodeName) {
    await page.click(this.selectors.reset);
    await this.toggleNode(nodeType, nodeName, true);
    await this.select();
  }

现在我想在“await this.select();”这一步之前select多项。

我试过这样编辑函数:

async selectMultiNodes([nodeType, nodeName],) {
    await page.click(this.selectors.reset);
    for (var i = 0; i < nodeType.length; i++) {
      await this.toggleNode(nodeType, nodeName, true);
    }
    await this.select();}

但是当我将此函数调用到 select 多项目时

await topologyBrowser.selectMultiNodes(['SGSN-MME', 'mme088'],['EPG', 'epg84-real'],['SAPC', 'sapc17']);

有错误

Expected 0-1 arguments, but got 3

我该如何解决这个问题?

您可以使用 spread syntax ...

让方法接受任意数量的参数

function tryMe(...args){
  console.log(args);
}

tryMe(1,2,3);

所以你可以让你的方法接受任意数量的数组并在循环中解构它们

async function selectMultiNodes(...nodes) {
   for(let i=0;i<nodes.length;i++){
     const [nodeType,nodeName] = nodes[i];
     console.log(nodeType,nodeName);
   }
}
selectMultiNodes(['SGSN-MME', 'mme088'],['EPG', 'epg84-real'],['SAPC', 'sapc17']);

所以你的最终代码是

async selectMultiNodes(...nodes) {
    await page.click(this.selectors.reset);
    for (var i = 0; i < nodes.length; i++) {
      const [nodeType,nodeName] = nodes[i];
      await this.toggleNode(nodeType, nodeName, true);
    }
    await this.select();
}