【发布时间】:2021-06-09 07:38:47
【问题描述】:
我想在一行中从生成的数组中获取最后一个元素,有更好的方法吗?
我正在考虑将数组分配给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
【问题讨论】:
-
使用
.at(-1)、.at(-2)等,这里也提到了:Get the last item in an array。使用这个polyfill。我建议在添加之前检查该方法的存在。或者,.slice(-1)[0]、.slice(-2)[0]等是惯用的。 -
将整个生成器存储在内存中只是为了拉出最后一个元素是次优的
-
@SebastianSimon:在最新的javascript中,这就像
for(x of iter) {}; return x一样简单
标签: javascript one-liner