Reputation: 31513
I have the following string
output_string = "[10, 10, [1,2,3,4,5], [10,20,30,40,50]]"
Then I JSON.parse
it
my_args = JSON.parse(output_string)
How do I unpack it in a Python-like way so that every element in my_args
becomes an argument to a JavaScript function?
some_javascript_function(*my_args)
// should be equivalent to:
some_javascript_function(my_args[0],my_args[1],my_args[2],my_args[3])
// or:
some_javascript_function(10, 10, [1,2,3,4,5], [10,20,30,40,50])
Is there a core JavaScript idiom that does that?
Upvotes: 38
Views: 21811
Reputation: 6113
The same way you accept unlimited args, you can unpack them.
let vals = [1, 2, 'a', 'b'];
console.log(vals); // [1, 2, "a", "b"]
console.log(...vals); // 1 2 "a" "b"
It will become a list
const someFunc = (...args) => {
console.log(args); // [1, 2, "a", "b"]
console.log(args[0]); // 1
console.log(...args); // 1 2 "a" "b"
}
someFunc(1, 2, 'a', 'b');
const someFunc = (num1, num2, letter1, letter2) => {
console.log(num1); // 1
console.log(letter1); // "a"
}
let vals = [1, 2, 'a', 'b'];
someFunc(...vals);
Send arguments
Upvotes: 13
Reputation: 3441
You can achieve that by doing this
some_javascript_function(...my_args)
This is called spread
operation (as unpacking
is in python).
view docs here https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator
Upvotes: 41
Reputation: 4514
Once you 've collected the function arguments in an array, you can use the apply()
method of the function object to invoke your predefined function with it:
some_javascript_function.apply(this, my_args)
The first parameter (this
) sets the context of the invoked function.
Upvotes: 42