Sie diese Probleme in vielen Art und Weise zu lösen, besteht eine Möglichkeit, wenn Sie Pfeil-Funktion verwenden wäre wie dieser mit Rest Operator
const arrSum = (...arr) => {
// if we have just on param which is array
if (arr.length === 1) {
return arr[0].reduce((a, b) => a + b, 0);
}
return arr.reduce((a, b) => a + b, 0);
};
console.log(arrSum(1, 2, 3)); // 6
console.log(arrSum([1, 2, 3])); // 6
im obigen Code verwenden wir Ruhe-Operator lernen mehr rest_parameters MDN
auch wir können normale Funktionen verwenden, um die Variable Argumente innerhalb von Funktionen wie diese
function arrSum(args) {
if (arguments.length === 1) {
return arguments[0].reduce((a, b) => a + b, 0);
} else {
return [].reduce.call(arguments, (a, b) => a + b, 0);
}
}
console.log(arrSum(1, 2, 3));
console.log(arrSum([1, 2, 3]));
mit erfahren Sie mehr über
arguments Object MDN
US/docs/Web/JavaScript/Referenz/Funktionen/Argumente
so kann das gleiche Problem gelöst werden viele Möglichkeiten wählen, was am besten für Sie funktioniert.
Verwenden der 'arguments' Variable. –
FWIW, ich rate davon ab, die API so * flexibel * zu gestalten. Akzeptieren einer variablen Anzahl von Argumenten, in Ordnung. Akzeptieren eines Arrays, gut. Akzeptieren * entweder *? Nein. Ich würde mit der Variadic-Funktion gehen, und wenn Sie jemals ein Array von Werten haben, ist es einfach genug, das mit dem Spread-Operator oder 'arrSum.apply (null, arr)' 'anzuwenden. – deceze