JavaScript 1.7中的解构
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 问题是它会变异。如果要保留原始图像,可以在操作前执行`切片()' 这可能不是你想要的答案,但这是实现你想要的最简单的方法。您可以尝
[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]);