Casper Flow
Casper Flow

Reputation: 53

passing the parameters as an array

I've used a preload() method:

preload('img-1','img-2',...,'img-num')

Which works fine. But now I wanted to place all that parameters in an array, so which would go like this now:

var myArray = ['img-1','img-2',...,'img-num'];

preload(myArray)

But obviously this is wrong method as preload is to load the parameters separated by comman not the array which combine all parameters.

So, I'm very much curious to know if there is something to do?

Upvotes: 0

Views: 53

Answers (1)

thefourtheye
thefourtheye

Reputation: 239463

You can use preload.apply (apply is available from the Function object's, Function.prototype.apply), which can spread out an array of data as arguments, like this

preload.apply(this, myArray);

For example,

function printer(first, second, third) {
    console.log(first, second, third);
}

printer(1, 2, 3);
# 1 2 3
printer([1, 2, 3]);
# [1, 2, 3] undefined undefined
printer.apply(this, [1, 2, 3]);
# 1 2 3

Since the number of arguments can vary, people normally use arguments special object.

You can get the list of arguments as an array, within the function, like this

function printer() {
    console.log(Array.prototype.slice.call(arguments));
}

printer(1, 2, 3);
# [ 1, 2, 3 ]
printer([1, 2, 3]);
# [ [ 1, 2, 3 ] ]
printer.apply(this, [1, 2, 3]);
# [ 1, 2, 3 ]

Upvotes: 4

Related Questions