JavaScript中类似python的解包

Python-like unpacking in JavaScript

本文关键字:python JavaScript      更新时间:2023-09-26

我有以下字符串

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)

我如何以类似python的方式解包它,以便my_args中的每个元素都成为JavaScript函数的参数?

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])

是否有一个核心的JavaScript习语做到这一点?

一旦您收集了数组中的函数参数,您就可以使用函数对象的apply()方法来调用您的预定义函数:

   some_javascript_function.apply(this, my_args)

第一个参数(this)设置被调用函数的上下文。

您可以这样做some_javascript_function(...my_args)

这被称为spread操作(与python中的unpacking一样)。查看这里的文档https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator

解压使用"…"h1> 像你接受无限的参数一样,你也可以解包它们。
let vals = [1, 2, 'a', 'b'];
console.log(vals);    // [1, 2, "a", "b"]
console.log(...vals); // 1 2 "a" "b"

示例:在函数

中接受无限参数

它将变成一个列表

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);

发送参数