Pasar una matriz como parámetro de función en JavaScript
Me gustaría llamar a una función usando una matriz como parámetros:
const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it
function call_me (param0, param1, param2 ) {
// ...
}
¿ Existe una mejor manera de pasar el contenido x
de call_me()
?
Aceptado
const args = ['p0', 'p1', 'p2'];
call_me.apply(this, args);
Consulte los documentos de MDN para obtener información sobre Function.prototype.apply()
.
Si el entorno admite ECMAScript 6, puede utilizar un argumento extendido en su lugar:
call_me(...args);
¿Por qué no pasas toda la matriz y la procesas según sea necesario dentro de la función?
var x = [ 'p0', 'p1', 'p2' ];
call_me(x);
function call_me(params) {
for (i=0; i<params.length; i++) {
alert(params[i])
}
}
En el estándar ES6 hay un nuevo operador de extensión ...
que hace exactamente eso.
call_me(...x)
Es compatible con todos los principales navegadores excepto IE.
El operador de extensión puede hacer muchas otras cosas útiles, y la documentación vinculada hace un muy buen trabajo mostrándolo.