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

IT技术 javascript arrays
2021-02-07 15:08:02

这是一个简单的问题,我以前做过。我只是不记得它是如何命名的,或者它到底叫什么。

在 python 中,我可以这样做:

arr = ['one', 'two']
one, two = arr

我如何在 JavaScript 中做到这一点?

6个回答

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

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'
从今天开始,解构赋值得到了全面支持kangax.github.io/compat-table/es6/#test-destructuring
2021-03-16 15:08:02

这个问题很老,但我喜欢发布这个替代(2016)解决方案:也可以使用扩展运算符“...”。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);

这就是解构赋值您可以使用以下语法在某些浏览器中执行此操作:

[one, two] = arr;

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

看起来它是 ES6 (2015) 的一部分,而不是 ES4?ecma-international.org/ecma-262/6.0/…
2021-03-14 15:08:02
@jab:谢谢!有时这些旧答案会被遗忘并变得过时,尽管 Mathias 似乎已经将这些信息添加到他的答案中:)
2021-03-30 15:08:02

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

我不确定 JavaScriptArray是否具有.apply()功能。我想你的意思是some_function.apply(this, my_array)看到这个答案
2021-03-22 15:08:02

认真贯彻落实。

http://jsfiddle.net/RichAyotte/6D2wP/

(function(a, b, c, d) {
    console.log(a, b, c, d);   
}.apply(this, ['a', 'b', 'c', 'd']));
这让我很开心。通过申请拆箱单,干得好先生!
2021-03-16 15:08:02