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?
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.
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
Unpack using "..."
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"
Example: Accept unlimited arguments into a function
It will become an array
const someFunc = (...args) => {
console.log(args); // [1, 2, "a", "b"]
console.log(args[0]); // 1
console.log(...args); // 1 2 "a" "b"
}
let vals = [1, 2, 'a', 'b'];
someFunc(vals);
Example: Send array of arguments into a function
const someFunc = (num1, num2, letter1, letter2) => {
console.log(num1); // 1
console.log(letter1); // "a"
}
let vals = [1, 2, 'a', 'b'];
someFunc(...vals);
Send arguments
来源:https://stackoverflow.com/questions/7077651/python-like-unpacking-in-javascript