Подтвердить что ты не робот

Преобразование массива в отдельные строки аргументов

Как мне передать этот массив в виде набора строк для функции? Этот код не работает, но я думаю, что это иллюстрирует то, что я пытаюсь сделать.

var strings = ['one','two','three'];

someFunction(strings.join("','")); // someFunction('one','two','three');

Спасибо!

4b9b3361

Ответ 1

Используйте apply().

var strings = ['one','two','three'];

someFunction.apply(null, strings); // someFunction('one','two','three');

Если ваша функция касается области объектов, передайте то, что вы хотите, чтобы this был установлен как первый аргумент вместо null.

Ответ 2

ES6

Для ES6 JavaScript вы можете использовать специальный оператор "деструктурирования":

var strings = ['one', 'two', 'three'];
someFunction(...strings);

ссылка: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator или http://www.2ality.com/2015/01/es6-destructuring.html

ES5 и старые

Для старого JavaScript вы можете:

var strings = ['one', 'two', 'three'];
someFunction.apply(this, strings);

Ответ 3

Решение довольно просто, каждая функция в JavaScript имеет связанный с ним метод, называемый "apply", который принимает аргументы, которые вы хотите передать в виде массива.

Итак:

var strings = ["one", "two", "three"];
someFunction.apply(this, strings);

'this' в приложении apply указывает область действия, если это просто функция на странице без объекта, затем установите ее в значение null, в противном случае передайте область, которую вы хотите, чтобы метод имел при вызове.

В свою очередь, внутри someFunction вы должны написать свой код примерно так:

function someFunction() {
  var args = arguments; // the stuff that was passed in
  for(var i = 0; i < args; ++i) {
    var argument = args[i];
  }
}