如何将扩展运算符传递给函数参数

时间:2017-02-17 02:00:03

标签: javascript html arrays

使用扩展运算符我可以使用Math.max(... firstArr,... secondArr)获取两个数组的最大值,并获得正确的值,我试图不添加扩展运算符手动,我是试图通过创建函数自动添加,我试图在参数之前添加或传递扩展运算符。示例

var firstArr = [1,2,3,4,5];
var secondArr = [6,7,8,9];

function myFun() {
    for(var i = 0; i <= arguments.length; i++) {
      var resl = Math.max(...arguments[i]);
      document.write("The maximum value is " + resl);
    }
}

myFun(firstArr, secondArr);

它显示两个结果值:

第一个结果是:“最大值 5

第二个结果将是:“最大值 9

一次不比较两个阵列,请帮帮我。感谢。

3 个答案:

答案 0 :(得分:3)

这听起来像你要做的是

function myFun(...arrays) {
    const allValues = [].concat(...arrays);
    return Math.max(...allValues);
}
console.log("The maximum value is " + myFun([1,2,3,4,5], [6,7,8,9]));

但是,我建议避免使用可能较大数据的扩展语法,并转到

function myFun(...arrays) {
    return Math.max(...arrays.map(arr => Math.max(...arr)));
}

甚至更好

function myFun(...arrays) {
    return arrays.map(arr => arr.reduce(Math.max)).reduce(Math.max);
}

答案 1 :(得分:2)

您似乎在说您希望函数将可变数量的单独数组作为参数,然后在任何这些数组中找到最大数字。

如果是这样,你可以说[].concat(...arguments)创建一个新数组,其中包含来自作为参数的各个数组的所有值,然后使用spread运算符将该新数组传递给Math.max()。 (你不需要循环。)

&#13;
&#13;
var firstArr = [1,2,3,4,5];
var secondArr = [6,7,8,9];

function myFun() {
    var resl = Math.max(...[].concat(...arguments));
    console.log("The maximum value is " + resl);
}

myFun(firstArr, secondArr);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以在函数声明中使用rest元素,将每个前面有spread元素的数组数组传递给函数参数并在函数中传播元素

function myFun(...arr) {
  return Math.max.apply(Math, ...arr)
}

myFun([...firstArr, ...secondArr /*, ...nArr*/ ]);