pQu*_*123 1 javascript ecmascript-6
如果我有:
function foo(number, ...args) {
//foo to add args to sum
}
Run Code Online (Sandbox Code Playgroud)
我希望调用者可以调用foo,如:
foo(10, 1, 2, 3); // 16
Run Code Online (Sandbox Code Playgroud)
要么:
foo(10, [1, 2, 3]); //16
Run Code Online (Sandbox Code Playgroud)
问题是如何实现这一点.我可以这样做:
function foo(number, ...args) {
let toAddArr = Array.isArray(args[0]) ? args[0] : args;
for (let toAdd of toAddArr) {
number = number + toAdd;
}
return number;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用一些递归:
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;
}
Run Code Online (Sandbox Code Playgroud)
使用该代码,您甚至可以在数组内传递数组,如果您愿意:)
编辑,for
循环:
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;
}
Run Code Online (Sandbox Code Playgroud)