I’m using this function to select one item in drop down menu:
async selectNode(nodeType, nodeName) { await page.click(this.selectors.reset); await this.toggleNode(nodeType, nodeName, true); await this.select(); }
Now I want to select multi item before “await this.select();
” this step.
I tried to edit function like this:
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();}
but when I call this function to select multi item
await topologyBrowser.selectMultiNodes(['SGSN-MME', 'mme088'],['EPG', 'epg84-real'],['SAPC', 'sapc17']);
it has error
Expected 0-1 arguments, but got 3
How do I fix this?
Advertisement
Answer
You can make a method take an arbitrary number of arguments using the spread syntax ...
function tryMe(...args){ console.log(args); } tryMe(1,2,3);
So you could make your method take an arbitrary number of arrays and deconstruct them in a loop
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']);
So your final code would be
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(); }