我有一个项目集合,我正在尝试使用yield 创建可迭代集合,但由于增加了复杂性,我想排除与特定条件不匹配的值
function getNodes()
{
for each (let node in my_nodes)
{
if ( node.cost < 1000 )
yield node;
}
}
这看起来很合理,我使用以下方式调用它:
let nodes = getNodes();
for (let item in nodes)
{
....
但是,我发现 item
返回为未定义,导致代码崩溃。我的语法正确吗?有更好的方法吗?如果我可以帮助的话,我宁愿不创建原始列表的精简版本,因为我希望智能地迭代排除的节点。
最佳答案
我无法重现您的问题。是getNodes
产生你期望的结果?
function getX() {
for each (let x in [1, 2, 3, 4]) {
yield x;
}
}
let y = getX();
for (let x in y) {
console.log(x);
}
// 1, 2, 3, 4
您的问题位于 my_nodes
或者说没有node
拥有特性成本< 1000
.
undefined < 1000 // false
关于Javascript 产量生成器 - 如何跳过值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922914/