用JavaScript解压缩类似Python

时间:2011-08-16 11:41:14

标签: javascript unpack

我有以下字符串

output_string = "[10, 10, [1,2,3,4,5], [10,20,30,40,50]]"

然后我JSON.parse

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习惯用法呢?

3 个答案:

答案 0 :(得分:40)

在数组中收集函数参数后,可以使用函数对象的apply()方法用它调用预定义函数:

   some_javascript_function.apply(this, my_args)

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

答案 1 :(得分:25)

你可以通过这样做来实现这一点 some_javascript_function(...my_args)

这称为spread操作(因为unpacking在python中)。 在此处查看文档https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator

答案 2 :(得分:1)

使用“ ...”解压缩

您可以接受无限制的参数,也可以解压缩它们。

<div>
  <h1 id="heading">JS DOM</h1>
  <ul>
    <li>
      <span>John</span>
      <button class="del">Delete</button>
    </li>
    <li>
      <span>Paul</span>
      <button class="del">Delete</button>
      <li>
        <span>George</span>
        <button class="del">Delete</button>
      </li>
      <li>
        <span>Ringo</span>
        <button class="del">Delete</button>
      </li>
  </ul>
  <input id="input" placeholder="Add Name">
  <button class="add">Add</button>
</div>

示例:将无限量的参数接受到函数中

它将成为一个数组

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"
}

let vals = [1, 2, 'a', 'b'];
someFunc(vals);

发送参数