I have an array of values:
['a', 'b', 'c', 'd']
and I need to pass these as parameters to a function:
window.myFunction('a', 'b', 'c', 'd');
This would be easier if I could just pass the array/object into the function, but the functions are written by other people or already exist and I cannot change them - they need to be passed as individual parameters, which is what I need solved.
The number of values being passed is not consistent. It may be one, it may be 100.
Again, I cannot affect the functions. They are how they are, and I will always receive an array of values to pass into them.
Use the .apply
method of the Function object.
window.myFunction.apply(window, ['a','b','c','d']);
The .apply
method invokes the function you're calling, but lets you set the function's this
value (the first argument) and lets you set its arguments using an Array (the second argument).
So here we kept window
as the this
value, and we're passing the Array as the individual arguments. The Array members will be distributed as though they were passed as individual arguments, so it's as if you had done this:
window.myFunction('a','b','c','d');
Try
window.myFunction.apply(window, ['a', 'b', 'c', 'd']);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With