JavaScript 1.7中的解构

JavaScript 1.7中的解构,javascript,clojure,destructuring,Javascript,Clojure,Destructuring,JavaScript 1.7允许进行分解: [a, b] = [1, 2] // var a = 1, b = 2; 是否有办法获得阵列的其余部分和头部形状: Clojure 蟒蛇 a, b* = [1, 2, 3] 参考: 您可以非常接近: var a = [1, 2, 3]; var head = a.shift(); // a is [2, 3] now 问题是它会变异。如果要保留原始图像,可以在操作前执行`切片()' 这可能不是你想要的答案,但这是实现你想要的最简单的方法。您可以尝

JavaScript 1.7允许进行分解:

[a, b] = [1, 2] // var a = 1, b = 2;
是否有办法获得阵列的其余部分和头部形状: Clojure

蟒蛇

a, b* = [1, 2, 3]
参考:

您可以非常接近:

var a = [1, 2, 3];
var head = a.shift(); // a is [2, 3] now
问题是它会变异。如果要保留原始图像,可以在操作前执行`切片()'

这可能不是你想要的答案,但这是实现你想要的最简单的方法。您可以尝试将其中的一些内容打包成一个函数来整理它

有没有办法在分解任务中获取阵列的其余部分和头部

我不这么认为。自FF16以来,似乎支持数组中的文字,但尚未涵盖解构赋值。如果是这样的话,看起来就像

[a, ...b] = [1, 2, 3];
更新:ES6确实支持这种语法,即数组分解模式中的“rest元素”

因此,在此之前,您需要使用一个助手函数:

function deCons(arr) {
    return [arr[0], arr.slice(1)];
}
[a, b] = deCons([1,2,3]);

有了产量和发电机,我希望使用可变的东西会很快变成一个虫子窝。如果你看1.8中的下一步,你就知道了:)绝对正确。易变性是邪恶的。:)你的意思是像Python
a,b*=[1,2,3]
或ES6
函数(a,…b)
?在我的示例中添加了Python,假设这是正确的方法:)这适用于答案,但是如果你需要前两项而不是[a,b,xs]=[1,2,3],你就必须编写dedeecons。标记为上述排列运算符正确。仅供参考,您当前的第一个示例。随着ES6得到更广泛的采用,对第二个示例中的帮助函数的需求可能会越来越少。@Ajedi32:是的,ES6现在确实支持这一点。我编辑了我的答案以反映这一点。不过,问题是关于JS1.7的。
function deCons(arr) {
    return [arr[0], arr.slice(1)];
}
[a, b] = deCons([1,2,3]);