Передача массива как параметр функции в JavaScript

Я хотел бы вызвать функцию с помощью массива в качестве параметров:

const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it

function call_me (param0, param1, param2 ) {
  // ...
}

Есть ли лучший способ передать содержание x в call_me()?

279
задан Robert 19 December 2016 в 00:02
поделиться

3 ответа

const args = ['p0', 'p1', 'p2'];
call_me.apply(this, args);

См. Документацию MDN для Function.prototype.apply () .


Если среда поддерживает ECMAScript 6, вы можете использовать вместо него аргумент распространения :

call_me(...args);
398
ответ дан 23 November 2019 в 02:02
поделиться

Почему бы вам не передать весь массив и не обработать его по мере необходимости внутри функции?

var x = [ 'p0', 'p1', 'p2' ]; 
call_me(x);

function call_me(params) {
  for (i=0; i<params.length; i++) {
    alert(params[i])
  }
}
102
ответ дан 23 November 2019 в 02:02
поделиться

Предполагая, что call_me является глобальной функцией, поэтому вы не ожидаете, что это будет установлено.

var x = ['p0', 'p1', 'p2'];
call_me.apply(null, x);
42
ответ дан 23 November 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: