JavaScript ES6:将数组拆分为rest,最后解析为

时间:2017-06-01 13:40:26

标签: javascript arrays ecmascript-6 destructuring

我刚刚为列表发现了令人愉快的ES6解构语法,即

ls = [1, 2, 3]

[first, ...rest] = ls

first设置为1,将rest设置为[2,3]。但是,是否可以使用类似的语法将列表拆分为rest=[1,2]last=3

我没有任何运气谷歌搜索它。我尝试了一些明显的语法猜测(见下文),但它们都产生了语法错误。

[rest..., last] = ls
[...rest, last] = ls

我想我可以通过将列表反转两次来实现,因此我的问题的另一种解决方案是恒定时间列表反转功能。

2 个答案:

答案 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