2016-02-28 4 views
0

Я искал вокруг и на самом деле не нашел вопроса относительно этого.вызов функции с несколькими параметрами, хранящимися в массиве в javascript

Так у меня есть функция, которая может принимать несколько параметров, (число параметров не имеет значения) что-то вроде этого:

function print(){ 
    for(var i = 0; i<arguments.length; i++){ 
     console.log(arguments[i]); 
    } 
} 

и у меня есть все параметры в массиве, как:

var params = [param1,param2,...]; 

Мне нужно вызвать функцию с теми параметрами, которые хранятся в массиве params. Ну, я мог бы это сделать, если я знал, что количество Params:

print(params[0],params[1],...); 

, но я не знаю, число параметров, так и нужен способ, чтобы вызвать функцию со всеми из них.

В любом случае я могу это сделать? Я попытался использовать print.call (params), но метод вызова не работает таким образом.

благодаря

+0

Возможный дубликат [Как получить значение из параметра URL?] (Http://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-url-parameter) –

+0

@GandalftheWhite: Что-то подсказывает мне, что вы схватили неправильный URL там ... :-) –

ответ

1

В ES5 и ранее, вы ищете Function#apply, что все истинные функции JavaScript есть:

console.log.apply(console, params); 

... где params ваш массив.

Function#apply вызывает функцию, которую вы вызываете ее с заданным значением this (первый аргумент) и столько же аргументов, сколько и в массиве, который вы ему даете.

Обратите внимание, что не гарантируется, что все функции, предоставляемые хостом (например, console.log), будут истинными функциями JavaScript. Однако в современных браузерах console.log имеет apply. YMMV, скажем, IE9 и ранее.

В ES2015 (ES6), а затем, вы бы использовать spread operator:

// ES2015 and later only 
console.log(...params); 

... опять где params ваш массив.

+0

awesome! это именно то, что мне нужно. благодаря :) –

Смежные вопросы