ES6:如果其余参数是数组,会发生什么? [英] ES6: What happens if the rest parameter is an array?
本文介绍了ES6:如果其余参数是数组,会发生什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我有:
function foo(number, ...args) {
//foo to add args to sum
}
我想要一个调用者能够调用foo :
and I want a caller to be able to call foo like:
foo(10, 1, 2, 3); // 16
或:
foo(10, [1, 2, 3]); //16
问题是如何实现这一点。
我可以这样做:
The question is how to implement this. Can I do this:
function foo(number, ...args) {
let toAddArr = Array.isArray(args[0]) ? args[0] : args;
for (let toAdd of toAddArr) {
number = number + toAdd;
}
return number;
}
推荐答案
您可以使用一些递归:
You could use some recursion:
function foo(...args) {
var sum = 0;
args.forEach((arg) => {
if (!Array.isArray(arg))
sum += arg
else
sum += foo(...arg); // if it's an array, destructure
});
return sum;
}
使用该代码,您甚至可以在数组内的数组内传递数组:
With that code, you can even pass arrays inside arrays inside arrays if you want :)
编辑,为
循环:
function foo(...args) {
var sum = 0;
for (var arg of args) {
if (!Array.isArray(arg))
sum += arg
else
sum += foo(...arg); // if it's an array, destructure
};
return sum;
}
这篇关于ES6:如果其余参数是数组,会发生什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文