/ / Преминаване на масив като списък с аргументи към функция, която има съществуващи параметри - javascript, масиви, функция, параметри, аргументи

Предаване на масив като списък с аргументи на функция, която има съществуващи параметри - javascript, масиви, функции, параметри, аргументи

Търсих малко и измислих .apply () и .call (), но изглежда не се държат така, както ми трябва.

Кажи, че съм

function example(someparam, anotherparam, finalparam){
}

Мога ли да динамично да го предам на масивсъответстват на тези параметри? Такова, че ако се опитвах да предам value1 на "someparam", value2 на "anotherparam", а value3 на "finalparam", бих могъл да го направя с масив като [value1, value2, value3]?

Кажете, ако тези стойности са:

valueArray = [value1, value2, value3];

Мислех, че може да се направи

example.apply(valueArray);

Това възможно ли е? Разбирам, че е възможно да се справят с параметрите динамично чрез преминаване на обекти, но имам нужда от това, за да не се изисква целевата функция да очаква обект.

Отговори:

1 за отговор № 1

Кодът ви е непълен ... можете да използвате

example.apply(this, valueArray);

0 за отговор № 2

Функциите на Javascript могат да предават произволен брой параметри, останалите ще бъдат просто неопределени.

В примерната функция, която можете да използвате arguments.length, Ако е 1, предположим, че сте били предавани масив стрите стойности. В противен случай продължете както обикновено. Можете също така просто да проверите типа на първия параметър или да проверите типа на последните два. Нещо като:

function example(someparam, anotherparam, finalparam){
if(typeof someparam === "Array") {
finalparam = someparam[2];
anotherparam = someparam[1];
someparam = someparam[0];
}

//continue as normal
}

Ако не можете да промените функцията, тогава можете просто да използвате example.apply(undefined, valueArray).