1

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

我正在考虑将数组分配给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

4

2 回答 2

3

你可以只是.pop()

pop() 方法从数组中删除最后一个元素并返回该元素。

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

于 2021-06-09T07:41:43.383 回答
0

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

[...getArray()].reverse()[0]
于 2021-06-09T07:48:23.697 回答