在JavaScript中将数组解包为单独的variables
这是一个简单的问题,我以前做过。 我不记得是怎么回事,或者说到底是怎么回事。
在Python中,我可以这样做:
arr = ['one', 'two'] one, two = arr
我如何在JavaScript中做到这一点?
这是目前唯一的跨浏览器兼容解决schemeAFAIK:
var one = arr[0], two = arr[1];
ES6将允许解构赋值:
var [x, y] = ['foo', 'bar']; console.log(x); // 'foo' console.log(y); // 'bar'
或者,坚持你最初的例子:
var arr = ['one', 'two']; var [one, two] = arr;
这是解构赋值 。 您可以使用以下语法在一些浏览器中执行此操作:
[one, two] = arr;
它支持一些最新的浏览器和转发器,如Babel和Traceur 。 这是ECMAScript 4引入的function,后来成为ECMAScript Harmony,最终成为ES 2015。
如果要将数组项作为函数parameter passing,可以使用数组的apply函数。
CoffeeScript有它: http : //jashkenas.github.com/coffee-script/#pattern_matching
而且,从页面顶部引用:
“CoffeeScript是一种可以编译成JavaScript的小语言,可以把它看作是JavaScript不那么炫耀的小孩兄弟 – 基本相同,高度差不多,但是风格不同,除了一小笔奖金之外,与JavaScript中的对等function相比,这只是另一种说法而已。“
var one = arr[0]; var two = arr[1];
执行严肃的想法。
http://jsfiddle.net/RichAyotte/6D2wP/
(function(a, b, c, d) { console.log(a, b, c, d); }.apply(this, ['a', 'b', 'c', 'd']));
问题是相当老,但我想发布这个替代(2016年)的解决scheme:也可以使用传播运算符“…”。
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);