Javascript处理未知数量的函数参数

标签 javascript

<分区>

我的函数需要接受任意数量的列表,然后输出它们的对称差异。 sym([1, 2, 3], [5, 2, 1, 4]) 应该返回 [3, 5, 4]sym([ 1, 2, 5], [2, 3, 5], [3, 4, 5]) 应该返回 [1, 4, 5]。我该如何处理未知数量的参数?我以为我可以使用单个变量 args 来创建列表的列表,但这不起作用。

function isin(num,arra)
{
  for (i=0; i<arra.length; i++)
  {
    if (num == arra[i]){return true;}
  }
  return false;
}

function sym(args) {
   var syms = [];
   console.log(args);
   for (i=0; i<args.length; i++)
   {
     var ins = false;
     for (j=0; j<args[i].length; j++)
     {
       for (k=i+1; k < args.length; k++)
       {
         if(isin(args[i][j], args[k]))
         {
           ins = true;
         }
       }
     }
     if (ins === false)
     {
       syms.push(args[i][j]);
     }
   }
  return syms;
}
sym([1, 2, 3], [5, 2, 1, 4]);

最佳答案

使用arguments,而不是args

而且您不需要在函数定义中包含它。

(注意:我假设你的其余代码在你真正得到你所期望的传递后有效)

所以:

function sym() {
   var syms = [];
   console.log(arguments);
   for (i=0; i<argumentss.length; i++)
   {
     var ins = false;
     for (j=0; j<arguments[i].length; j++)
     {
       for (k=i+1; k < arguments.length; k++)
       {
         if(isin(arguments[i][j], arguments[k]))
         {
           ins = true;
         }
       }
     }
     if (ins === false)
     {
       syms.push(arguments[i][j]);
     }
   }
  return syms;
}

关于Javascript处理未知数量的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583407/

相关文章:

javascript - 通过单击将 div 的背景颜色从左边框更改为右边框

javascript - 在ajax错误上执行javascript函数

javascript - React 组件中不同状态之间的平滑过渡

javascript - 外部依赖项错误地捆绑在 rollup.js 中?

javascript - 在 Node.JS 中创建的文档 Restful API

javascript - 处理 RequireJS 必需类

javascript - javascript 中的 bg 颜色、悬停、!important 和 .css

javascript - d3 转换为对象数组中的数字

javascript - Angular 2 将点击事件传递给可重用的通用组件

javascript - 如何在单击按钮时显示新的 HTML 表格