JavaScript中的解构1.7

时间:2014-02-05 18:31:12

标签: javascript clojure destructuring

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

2 个答案:

答案 0 :(得分:5)

  

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

我不这么认为。自FF16以来,似乎支持spread operator数组文字,但harmony proposal尚未涵盖解构分配。如果是的话,它看起来像

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

更新 :ES6支持这种语法,称为数据解析模式中的“rest元素”。

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

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

答案 1 :(得分:0)

你可以非常接近:

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

问题在于它变异了。如果要保留原始文件,可以在操作前执行'slice()'。

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

相关问题