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