Использование eval () в Javascript для распаковки массива - PullRequest
1 голос
/ 26 мая 2010

У меня есть массив, который мне нужно распаковать.

Итак, что-то вроде

var params = new Array();
params.push("var1");
params.push("var2");

Мне нужно что-то вроде

"var1", "var2".

Я пытался использовать eval, но eval () дает мне что-то вроде var1, var2 ... я не хочу сам вставлять кавычки, поскольку передаваемые переменные могут быть целыми числами или другими типами. Мне нужно передать это в функцию, поэтому я не могу просто пройти массив и засунуть его в строку.

Какое здесь предпочтительное решение?

Ответы [ 2 ]

7 голосов
/ 26 мая 2010

Если у вас есть массив значений, которые вы хотите передать в функцию, заполняющую формальные параметры, тогда вы можете использовать метод apply прототипа функции.

var arr = [1, 2, "three"];

function myFunc(a, b, c) {
   // a = 1, b = 2, c = "three"
   ...
}

myFunc.apply(this, arr);

Кстати, параметр this в последнем операторе может быть установлен для любого объекта, чтобы установить значение this внутри myFunc

0 голосов
/ 26 мая 2010

Это генерирует вывод, который вы хотите

var params = new Array();
params.push("var1");
params.push("var2");

var s = "\"" + params.join("\",\"") + "\"";
...