我最近为我的客户端javascript在typescript中构建了一个linq替代品。我知道有很多开源项目可用,但我想自己构建它来迎接挑战。 我开始研究懒惰的评估(迭代器)我的方法。我开始挣扎着好处。
如果我有这样的话。
var myArray = [1,2,3,4,5];
目前的热切评估
var myResult = myArray.Where(function(x){ x >= 4 });
//my result will be 4,5 - then I can run a Last
var myLastItem = myResult.Last();
我的上一个项目= 5。
如果我将它们合并,我可以做以下事情。最后一个方法只会循环4,5(从哪里过滤) 因此,它不需要遍历整个记录集(myArray)
var myLastItem = myArray.Where(function(x){ x >= 4 }).Last();
如果我们尝试使用迭代器来懒惰地评估它,这对它有什么帮助呢?
唯一的好处是,如果我们有一个if语句,我们可能需要结果 - 或者可能不需要。这样,linq语句永远不会运行。