从生成的数组中获取最后一个元素的惯用方法是什么?

What's the idiomatic way to get the last element from a generated array?

我想在一行中从生成的数组中获取最后一个元素,有更好的方法吗?

我在考虑将数组分配给 foo 然后立即将 foo 的最后一个元素再次分配给它自己但是它不起作用:

function* getArray() {
  yield* [1, 2, 3];
}

let foo = (foo = [...getArray()], foo[foo.length - 1]);

console.log(foo); // 3?

这有效,但它调用了 getArray() 两次,这是完全没有必要的。

function* getArray() {
  yield* [1, 2, 3];
}

let foo = [...getArray()][[...getArray()].length - 1];

console.log(foo); // 3

你可以 .pop()

The pop() method removes the last element from an array and returns that element.

function* getArray() {
  yield* [1, 2, 3];
}

let foo = [...getArray()].pop()
console.log(foo); // 3

let bar = [...getArray()].slice(-2)[0]
console.log(bar); // 2

let baz = [...getArray()].splice(-2, 1)[0]
console.log(baz); // 2

这是一种在单个语句中完成此操作的方法:

[...getArray()].reverse()[0]