我刚刚为列表发现了令人愉快的ES6解构语法,即
ls = [1, 2, 3]
[first, ...rest] = ls
将first
设置为1
,将rest
设置为[2,3]
。但是,是否可以使用类似的语法将列表拆分为rest=[1,2]
和last=3
?
我没有任何运气谷歌搜索它。我尝试了一些明显的语法猜测(见下文),但它们都产生了语法错误。
[rest..., last] = ls
[...rest, last] = ls
我想我可以通过将列表反转两次来实现,因此我的问题的另一种解决方案是恒定时间列表反转功能。
答案 0 :(得分:3)
通常所说的"阵列解构"实际上是对 iterable 进行解构,其中数组是一种特殊情况。关于iterables的事情是它们可以是无限的,或者是懒惰的"。这就是为什么你不能解构成一些任意数量的元素,然后是最后一个元素:
const [...first, last] = integers();
因为integers
可能是
function* integers() {
let n = 0;
while (true) yield n++;
}
然后last
会是什么?
答案 1 :(得分:0)
不,这仅适用于尾随数组元素。所以,正如你所说,他们实现你想要的方法首先是颠倒阵列。
万一你没有遇到类似的对象模式,有一个:
const {a, ...rest} = {a: "prop1", b: "prop2", c: "prop3"}
尝试所有这些新功能的一个很好的工具是https://babeljs.io/repl