我有一个关于项目的集合,我试图使用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
以未定义的形式返回,导致代码被禁止。我的语法是否正确?有没有更好的方法呢?如果我可以帮助它,我宁愿不创建原始列表的简化版本,因为我希望在排除的节点上智能地迭代。
答案 0 :(得分:1)
我无法重现您的问题。 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