【问题标题】:Get first and last elements in array, ES6 way [duplicate]获取数组中的第一个和最后一个元素,ES6方式[重复]
【发布时间】:2017-11-15 14:16:27
【问题描述】:

let array = [1,2,3,4,5,6,7,8,9,0]

文档是这样的

[first, ...rest] = array 将输出 1 和数组的其余部分

现在有没有办法只取第一个和最后一个元素 1 & 0Destructuring

例如:[first, ...middle, last] = array

我知道如何以另一种方式获取第一个和最后一个元素,但我想知道 es6 是否有可能

【问题讨论】:

  • rest参数后面不能有参数。
  • let {0: first, [array.length-1]: last} = array; :-D
  • @Bergi 好吧,是的,这是一种干净的方式。
  • 第一: [first] = [ 1, 2, 3, 4 ].slice(0, 1)最后: [last] = [ 1, 2, 3, 4 ].slice(-1)

标签: javascript arrays function ecmascript-6


【解决方案1】:

rest parameter 只能在最后使用,不能在解构中的其他任何地方使用,因此它不会按您的预期工作。

相反,您可以destructor 某些属性(数组也是JS 中的对象),例如0 为第一个元素,最后一个元素的索引为最后一个。

let array = [1,2,3,4,5,6,7,8,9,0]

let {0 : a ,[array.length - 1] : b} = array;
console.log(a, b)

或者将长度作为另一个变量提取并基于该变量获取最后一个值的更好方法(@Bergi 建议),即使没有引用数组的变量也可以工作。

let {0 : a ,length : l, [l - 1] : b} = [1,2,3,4,5,6,7,8,9,0];
console.log(a, b)

【讨论】:

  • 这是一个休息而不是一个传播 FYI,它不是一个运算符,它只是语法。
  • 嗯,是的,但不要那样做。 let a = array[0], b = array[array.length-1]; 干净多了。如果我们真的想让它尽可能简洁,还有let {0:a, length:l, [l-1]:b} = array;
  • @bergi is l 在将值赋给 b 之前被定义???
  • 是的,它是严格从左到右评估的
  • @bergi 谢谢,现在我清楚了 :)
猜你喜欢
  • 2013-12-01
  • 1970-01-01
  • 2018-02-22
  • 2012-07-17
  • 1970-01-01
  • 2016-07-27
  • 2021-03-14
  • 1970-01-01
  • 2016-01-08
相关资源
最近更新 更多