En JavaScript puedes hacer que una función acepte un número ilimitado de parámetros. Además es algo que podrás hacer de varias formas. Vamos a ver primero una mala aproximación para así explicar el problema y seguidamente veremos cómo solucionarlo mediante el operador spread.
Parámetros opcionales
Vamos a partir de que tienes una función llamada sumar()
cuyo objetivo es el de sumar varios valores:
const sumar = (elem1, elem2) => {
return elem1 + elem2;
}
A la función anterior podemos pasarle dos parámetros, tal que así:
const resultado = sumar(2, 4);
En caso de que quisieras agregar más parámetros, haciendo que la función funcione con dos o más parámetros, podrías agregar parámetros opcionales con un valor predefinido:
const sumar = (elem1, elem2, elem3 = 0) => {
return elem1 + elem2 + elem2;
}
Sin embargo, esta solución es impracticable si quisieras agregar infinitos parámetros, ya que tendrías que especificarlos uno a uno. Es decir, que no es una buena solución.
Usa el operador Spread
La solución pasa por usar el operador spread seguido del nombre de un único array que los contendrá a todos. El operador spread se representa mediante tres puntos ...
. En el interior de la función del ejemplo anterior podremos recorrer el array y sumar los elementos, obteniendo así el resultado:
const sumar = (...elems) => {
let total = 0;
for (const elem of elems) {
total += elem;
}
return total;
}
También podrías declarar una función que, por ejemplo, una un número ilimitado de cadenas:
const unirCadenas = (...cadenas) => {
return cadenas.join(' ');
}
Si quieres también puedes simplificar la función anterior usando una función flecha:
const unirCadenas = (...cadenas) => cadenas.join(' ');
Si no estás seguro de lo que hemos hecho, puedes consultar el tutorial en el que explicamos en detalle las diferencias entre las funciones normales y las funciones flecha.
Ahora vamos a llamar a la función anterior:
unirCadenas('Que tengas', 'un buen día');
Y esto ha sido todo.