函数参数数量不确定时,如何将数组的数组作为多参数传入?
解决动态传参调用函数的问题
这问题我太熟了!JavaScript里刚好有两个专门处理这种“动态把数组元素拆成函数参数”的方法,完美适配你的场景,给你拆解一下:
方法一:ES6扩展运算符(推荐)
这是最简洁直观的写法,ES6及以后的环境都支持。用...运算符直接把你的数组的数组展开,每个子数组都会自动变成函数的单独参数:
let arr = [[0, 1], [2, 3], [4, 5]]; // 不管arr里有多少个子数组,一行搞定 theFunction(...arr); // 当arr有3个子数组时,等价于 theFunction(arr[0], arr[1], arr[2]) // 如果arr只有2个,就等价于 theFunction(arr[0], arr[1]),完全自动适配
方法二:apply方法(兼容旧环境)
如果需要兼容ES6之前的旧浏览器/环境,可以用函数的apply方法。它的第二个参数就是一个数组,会把数组里的每个元素作为单独参数传给目标函数:
let arr = [[0, 1], [2, 3], [4, 5]]; // 第一个参数是函数内部的this指向,如果你的函数不需要用到this,传null或者undefined就行 theFunction.apply(null, arr); // 效果和上面完全一样,自动适配子数组的数量
小提示
优先选扩展运算符,代码更易读也更现代;apply方法留作兼容旧环境的备选就好。
内容的提问来源于stack exchange,提问作者kosmosan
相关产品推荐
相关产品推荐

