gpt4 book ai didi

javascript - 从 ES6 生成器创建数组

转载 作者:行者123 更新时间:2023-11-28 17:58:58 27 4
gpt4 key购买 nike

假设我想将 ES6 生成器的结果分配给一个数组变量。

function* gen() {
for(let i = 0; i < 3; i++) {
yield i;
}
}

let [...b] = gen();
console.log(b); // [0, 1, 2]

这里b将被赋值为[0, 1, 2]。为什么这有效?

最佳答案

生成器在被调用时返回 iterator 。例如,我们可以使用 for … of 循环遍历迭代器:

for (const item of gen()) {
console.log(item);
}

这只会遍历生成器中的每个项目:

0
1
2

如果我们调用spread syntax,也会发生同样的事情:

const res = [...gen()];

res 将是:

[0, 1, 2]

在您的示例中,您使用的是解构赋值。使用括号语法进行解构会调用迭代来获取值(数组的原理相同)。示例:

const [a, b] = gen();
// a: 0, b: 1

由于您正在使用 rest syntax ,你基本上是在说:给我迭代器中剩下的所有值,并将它们保存在变量 b 中:

let [...b] = gen();
// b: [0, 1, 2]

这适用于任何可迭代:

const [a, b, ...c] = 'hello';
// a: 'h', b: 'e', c: 'llo'

就我个人而言,我发现以下内容更容易推理:

const res = [...gen()];

关于javascript - 从 ES6 生成器创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43939821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com