在GitHub上的源代碼
兼容ES5性宏!主流的瀏覽器都可用!
介紹
Linq就是C#上面的linq玛痊。
沒(méi)有完全實(shí)現(xiàn)汰瘫,畢竟要根據(jù)js進(jìn)行本地化處理。
為了提高自由度擂煞,也不主動(dòng)拋出異常混弥。
沒(méi)有實(shí)現(xiàn)的方法是:Single,Cast对省,AsEnumerable蝗拿,ToList。
用ToMap方法代替ToDictionary方法蒿涎。ES6的Map很好地代替了C#的Dictionary呢哀托。
Iterator代替IEnumerator,Iterable代替IEnumerable劳秋。
例子
一時(shí)沒(méi)想到有意思的例子仓手,就簡(jiǎn)單舉兩個(gè)。
var uf = Iterable.Range(0, Number.MAX_VALUE);
var f1 = uf.Where(function (v) { return v % 2 === 0; });
var f2 = uf.Where(function (v) { return v % 3 === 0; });
var foo= f1.Zip(f2, function (x, y) { return x * y; }).Take(10);
求前十個(gè)能被2整除的自然數(shù)與前十個(gè)能被3整除的自然數(shù)的乘積的集合玻淑。在ES6可以這樣被打印嗽冒。
for(var v of foo){
console.log(v);
}
ES6以前用ForEach方法代替for...of...語(yǔ)法
foo.ForEach(function (v) {
console.log(v);
});
結(jié)果如下:
![](https://pic3.zhimg.com/v2-1fc79e4fcdedeaf3cad68bfc545667f6_b.png)
Iterable(['hello', 'world']).SelectMany(function (v) { return v; }).ToArray();
結(jié)果如下:
![](https://pic3.zhimg.com/v2-ea2a0445ad9dd53dd470fe344dae0c66_b.png)
用途
可以用作處理數(shù)據(jù)流。
也可以在輕便的環(huán)境下練習(xí)linq的使用补履。
最后
感謝大家的閱讀添坊,歡迎指出bug及建議。