Pasar una matriz como parámetro de función en JavaScript

Resuelto Robert asked hace 14 años • 13 respuestas

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 xde call_me()?

Robert avatar May 18 '10 16:05 Robert
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);
KaptajnKold avatar May 18 '2010 09:05 KaptajnKold

¿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])
  }
}
Karl Johan avatar May 18 '2010 09:05 Karl Johan

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.

BoltKey avatar Jan 11 '2016 18:01 BoltKey