5

JavaScript 1.7 允许解构:

[a, b] = [1, 2] // var a = 1, b = 2;

有没有办法让数组的其余部分和头部像:Clojure

(let [[head & xs] [1 2 3]] (print head xs)) ; would print: 1 [2 3]

Python

a, b* = [1, 2, 3]

参考: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Using_JavaScript_1.7

4

2 回答 2

5

有没有办法让数组的其余部分进入解构赋值?

我不这么认为。自FF16 以来,数组文字中似乎支持展开运算符,但和谐提案尚未涵盖解构分配。如果是这样,它看起来像

[a, ...b] = [1, 2, 3];

更新:ES6 确实支持这种语法,在数组解构模式中称为“剩余元素”。

所以在那之前,你需要使用一个辅助函数:

function deCons(arr) {
    return [arr[0], arr.slice(1)];
}
[a, b] = deCons([1,2,3]);
于 2014-02-05T18:48:20.223 回答
0

你可以非常接近:

var a = [1, 2, 3];
var head = a.shift(); // a is [2, 3] now

问题是它会发生变异。如果要保留原件,可以在操作前执行“slice()”。

这可能不是您正在寻找的答案,但它是实现您正在寻找的最简单的方法。您可以尝试将其中的一些包装到一个函数中来整理它。

于 2014-02-05T18:38:28.990 回答