在JavaScript中将数组解压为单独的变量

在JavaScript中将数组解压为单独的变量,javascript,arrays,Javascript,Arrays,这是一个简单的问题,我以前也做过。我只是不记得它是怎么来的,或者确切的名字是什么 在python中,我可以做到这一点: arr = ['one', 'two'] one, two = arr 我如何在JavaScript中做到这一点?这很简单。您可以使用以下语法在某些浏览器中执行此操作: [one, two] = arr; 一些最新的浏览器和Transpiler(如和)都支持它。这是ECMAScript 4引入的一项功能,后来成为ECMAScript Harmony,最终成为ES 2015。

这是一个简单的问题,我以前也做过。我只是不记得它是怎么来的,或者确切的名字是什么

在python中,我可以做到这一点:

arr = ['one', 'two']
one, two = arr
我如何在JavaScript中做到这一点?

这很简单。您可以使用以下语法在某些浏览器中执行此操作:

[one, two] = arr;

一些最新的浏览器和Transpiler(如和)都支持它。这是ECMAScript 4引入的一项功能,后来成为ECMAScript Harmony,最终成为ES 2015。

这是目前唯一一个跨浏览器兼容的AFAIK解决方案:

var one = arr[0];
var two = arr[1];
var one = arr[0],
    two = arr[1];

ES6将允许分解分配:

let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
或者,坚持你最初的例子:

var arr = ['one', 'two'];
var [one, two] = arr;
您还可以创建默认值:

const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
咖啡脚本有:

并且,从页面顶部引用:


“CoffeeScript是一种编译成JavaScript的小型语言。可以把它想象成JavaScript不那么招摇的弟弟——相同的基因,大致相同的身高,但风格不同。除了一些额外的好处之外,CoffeeScript中的语句与JavaScript中的等价语句一一对应,这只是另一种说法。”

如果希望数组项作为函数参数传递,则可以使用数组的apply函数。

实现了Serrent的想法


这个问题很老了,但我想发布这个备选(2016)解决方案:你也可以使用价差操作符“…”


你真的应该使用
var
来防止变量污染全局范围。我只是假设它的所有声明变量:)一次声明每个范围的所有
var
s可能是一个更好的主意,而不是有两个单独的
var
声明。我不确定JavaScript
数组是否有de>.apply()
函数。我想你指的是
一些函数。apply(这个,我的数组)
。看,这并不能回答问题。我很欣赏CoffeeScript有一些巧妙的东西,但问题是关于Javascript的。死链接:((看起来它是ES6(2015)的一部分),不是ES4?@jab:谢谢!有时这些旧答案会被遗忘,变得过时,尽管看起来Mathias已经在他的答案中添加了这些信息:)从今天起,解构任务得到了充分支持。这一任务让我很开心。通过apply解包列表,做得好,先生!
(function(a, b, c, d) {
    console.log(a, b, c, d);   
}.apply(this, ['a', 'b', 'c', 'd']));
let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);