Thư viện linq.js này các bạn có thể tải về tại đây. Hoặc vào website của tác giả https://archive.codeplex.com/?p=linqjs, hoặc có thể cài đặt trên NuGet (linq.js, linq.js-jQuery,linq.js-bindings)
Ra mắt bản beta vào 2012/07/19 cho tới nay 2020 thì cũng được 8 năm. Tôi đã sử dụng linq c# từ những ngày đầu và gần như là không thể bỏ. Trong javascript nếu như trước kia chỉ dùng for để duyệt mảng thì từ khi có thư viện này tôi cũng đã thay đổi hoàn toàn cách code trong js. Hiện tại phần mềm tôi đang phát triển viết chủ yếu là code javascript và sử dụng linq.js rất nhiều. (Phần mềm đang phát triển - sẽ giới thiệu trong những bài viết tới).
Linq.js cung cấp đầy đủ các phương thức như .NET 4.0 và mở rộng thêm nhiều phương thức khác, hỗ trợ IntelliSense
Hướng dẫn cài đặt
<script src='linq.js' type='text/javascript'></script>
Dưới đây là document lấy trực tiếp từ document của tác giả
1. LINQ Pad
2. Generating Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Choice | Enumerable | params T obj |
Enumerable.Choice("a","b","c","d").Take(10) Enumerable.Choice(["a","b","c","d"]).Take(10) |
Cycle | Enumerable | params T obj |
Enumerable.Cycle(1,"foo",true).Take(10) Enumerable.Cycle([1,"foo",true]).Take(10) |
Empty | Enumerable | () |
Enumerable.Empty() |
From | Enumerable | Array obj |
var arr = [1,124,"aaa",function(){},false]; Enumerable.From(arr) |
Object obj |
var obj = {a:3,b:"3",z:function(){},d:true}; Enumerable.From(obj).Select("$.Key + ':' + $.Value") |
||
NodeList obj |
var node = document.getElementsByTagName("h2"); Enumerable.From(node).Select("$.innerHTML") |
||
Number obj |
Enumerable.From(5) |
||
String obj |
Enumerable.From("foobar") |
||
IEnumerable(WSH) obj |
// using with Windows Script Host // var fso = WScript.CreateObject("Scripting.FileSystemObject"); // var files = fso.GetFolder("C:\\").Files; // Enumerable.From(files).Select("$.Name").ForEach("WScript.Echo($)"); |
||
Return | Enumerable | T element |
Enumerable.Return("foobar") |
Matches | Enumerable | string input, RegExp pattern |
Enumerable.Matches("xbcyBCzbc", /(.)bc/i) .Select("'index='+$.index+' all='+$[0]+' capture='+$[1]") |
string input, string pattern |
Enumerable.Matches("xbcyBCzbc", "(.)bc") .Select("'index='+$.index+' all='+$[0]+' capture='+$[1]") |
||
string input, string pattern, string flags |
Enumerable.Matches("xbcyBCzbc", "(.)bc", "i") .Select("'index='+$.index+' all='+$[0]+' capture='+$[1]") |
||
Range | Enumerable | int start, int count |
Enumerable.Range(10,5) |
int start, int count, int step |
Enumerable.Range(10,5,3) |
||
RangeDown | Enumerable | int start, int count |
Enumerable.RangeDown(10,5) |
int start, int count, int step |
Enumerable.RangeDown(10,5,3) |
||
RangeTo | Enumerable | int start, int to |
Enumerable.RangeTo(10,18) Enumerable.RangeTo(3,-5) |
int start, int to, int step |
Enumerable.RangeTo(1,9,3) Enumerable.RangeTo(1,-9,3) |
||
Repeat | Enumerable | T obj |
Enumerable.Repeat(3).Take(5) |
T obj, int count |
Enumerable.Repeat("foo",10) |
||
RepeatWithFinalize | Enumerable | T initializer(), void finalizer(T) |
// example for WScript(Text EnumerateLines and Finally Close) // var fso = WScript.CreateObject("Scripting.FileSystemObject"); // Enumerable.RepeatWithFinalize( // function () { return fso.OpenTextFile("C:\\file.txt") }, // function (ts) { ts.Close() }) // .TakeWhile(function (ts) { return !ts.AtEndOfStream }) // .Select(function (ts) { return ts.ReadLine() }); |
Generate | Enumerable | T func() |
Enumerable.Generate("Math.random()").Take(5) |
T func(), int count |
Enumerable.Generate("Math.random()", 5) |
||
ToInfinity | Enumerable | () |
Enumerable.ToInfinity().Take(5) |
int start |
Enumerable.ToInfinity(1000).Take(5) |
||
int start, int step |
Enumerable.ToInfinity(1000,5).Take(5) |
||
ToNegativeInfinity | Enumerable | () |
Enumerable.ToNegativeInfinity().Take(5) |
int start |
Enumerable.ToNegativeInfinity(1000).Take(5) |
||
int start, int step |
Enumerable.ToNegativeInfinity(1000,5).Take(5) |
||
Unfold | Enumerable | T seed, T func(T) |
Enumerable.Unfold(5, "$+3").Take(10) |
3. Projection and Filtering Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
CascadeBreadthFirst | Enumerable | T[] func(T) |
Enumerable.Return(1).CascadeBreadthFirst("$+$").Take(5) |
T[] func(T), T resultSelector(T) |
Enumerable.Return(1).CascadeBreadthFirst("$+$","$*$").Take(5) |
||
T[] func(T), T resultSelector(T, int) |
Enumerable.Return(document.body) .CascadeBreadthFirst("$.childNodes", "v,n=>{value:v,nestLevel:n}") .Where("$.nestLevel<3 && $.value.nodeType= =1") .Select("$.nestLevel + ':' + $.value.tagName") |
||
CascadeDepthFirst | Enumerable | T[] func(T) |
Enumerable.Return(1).CascadeDepthFirst("$+$").Take(5) |
T[] func(T), T resultSelector(T) |
Enumerable.Return(1).CascadeDepthFirst("$+$","$*$").Take(5) |
||
T[] func(T), T resultSelector(T, int) |
Enumerable.Return(document.body) .CascadeDepthFirst("$.childNodes", "v,n=>{value:v,nestLevel:n}") .Where("$.nestLevel<3 && $.value.nodeType= =1") .Select("$.nestLevel + ':' + $.value.tagName") |
||
Flatten | Enumerable | () |
var array = [1,[234,2,[62,3]],[234,5],3]; Enumerable.From(array).Flatten() |
Pairwise | Enumerable | T selector(T, T) |
Enumerable.Range(1,10) .Pairwise("prev,next=>prev + ':' + next") |
Scan | Enumerable | T func(T, T) |
Enumerable.Range(1,10).Scan("a,b=>a+b") |
T seed, T func(T, T) |
Enumerable.Range(1,10).Scan(100,"a,b=>a+b") |
||
T seed, T func(T, T), T resultSelector(T) |
Enumerable.Range(1,10).Scan(100,"a,b=>a+b","$*10") |
||
Select | Enumerable | T selector(T) |
Enumerable.Range(1,10).Select("$*10") |
T selector(T, int) |
Enumerable.RangeDown(10,10).Select("value,index=>index + ':' + value") |
||
SelectMany | Enumerable | T[] collectionSelector(T) |
Enumerable.Range(1,3).SelectMany("Enumerable.Repeat($,3)") |
T[] collectionSelector(T, int) |
Enumerable.Range(5,5) .SelectMany("value,index=>Enumerable.Repeat('str'+value,index+1)") |
||
T[] collectionSelector(T), resultSelector(T, T) |
Enumerable.Range(1,3) .SelectMany("Enumerable.Repeat($,3)","first,middle=>first + ':' + middle*10") |
||
T[] collectionSelector(T, int), resultSelector(T, T) |
Enumerable.Range(5,5) .SelectMany("v,i=>Enumerable.Repeat('str'+v,i+1)","f,m=>f + ':' + m") |
||
Where | Enumerable | bool predicate(T) |
Enumerable.Range(1,10).Where("$%2==0") |
bool predicate(T, int) |
Enumerable.Range(1,10).Where("value,index=>value*index>10") |
||
OfType | Enumerable | Class type |
Enumerable.From([1,"a",2,"b","c",3]).OfType(Number) Enumerable.From([1,"a",2,"b","c",3]).OfType(String) function ClassA(v){this.v = v} Enumerable.From([new ClassA("a"),1,2,new ClassA("b")]) .OfType(ClassA).Select("$.v") |
Zip | Enumerable | T[] second,T selector(T, T) |
Enumerable.RangeDown(10,10) .Zip(Enumerable.Range(1,10),"outer,inner=>outer + ':' + inner") |
T[] second,T selector(T, T, int) |
Enumerable.RangeDown(10,10) .Zip(Enumerable.Range(1,10),"outer,inner,index=>index + ':' + outer*inner") |
4. Join Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Join | Enumerable | T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, T) |
var array1 = [13,413,5,135,61,631,13,61,3]; var array2 = [13,134,53,6,3,7,13,7,7,135,61,3,13]; Enumerable.From(array1) .Join(array2,"","","outer,inner=>outer + ':' + inner") |
T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, T), T compareSelector(T) |
var array1 = [10,405,50,135]; var array2 = [1,4,7,8]; Enumerable.From(array1) .Join(array2,"","","outer,inner=>outer + ':' + inner","$%2==0") |
||
GroupJoin | Enumerable | T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, Enumerable) |
var array1 = [13,413,5,135,61,631,13,61,3]; var array2 = [13,134,53,6,3,7,13,7,7,135,61,3,13]; Enumerable.From(array1) .GroupJoin(array2,"","","outer,lookup=>outer + ':' + lookup.ToString('-')") |
T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, Enumerable), T compareSelector(T) |
var array1 = [10,405,50,135]; var array2 = [1,4,7,8]; Enumerable.From(array1) .GroupJoin(array2,"","","outer,lookup=>outer + ':' + lookup.ToString('-')","$%2==0") |
5. Set Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
All | Boolean | bool predicate(T) |
Enumerable.Range(1,10).All("$<5") Enumerable.Range(1,10).All("$<15") |
Any | Boolean | () |
Enumerable.Range(1,0).Any() Enumerable.Range(1,10).Any() |
bool predicate(T) |
Enumerable.Range(1,10).Any("$==5") Enumerable.Range(1,10).Any("$==15") |
||
Concat | Enumerable | T[] second |
Enumerable.Range(1,5).Concat(Enumerable.Repeat("foo",5)) |
Insert | Enumerable | int index, T[] second |
Enumerable.Range(1,5).Insert(3,Enumerable.Repeat("foo",5)) |
Alternate | Enumerable | T value |
Enumerable.Range(1,5).Alternate(-1) |
Contains | Boolean | T value |
Enumerable.Range(1,5).Contains(3) Enumerable.Range(1,5).Contains(10) |
T value, T compareSelector(T) |
Enumerable.Range(1,5).Select("{test:$}").Contains(3) Enumerable.Range(1,5).Select("{test:$}").Contains(3,"$.test") |
||
DefaultIfEmpty | Enumerable | T defaultValue |
Enumerable.Range(1,5).DefaultIfEmpty("default") Enumerable.Range(1,0).DefaultIfEmpty("default") |
Distinct | Enumerable | () |
var array = [1,412,5,3,5,412,7]; Enumerable.From(array).Distinct() |
T compareSelector(T) |
var seq = Enumerable.Range(1,10).Select("{test:$%3}"); seq.Distinct("$.test").Select("$.test") |
||
Except | Enumerable | T[] second |
var array1 = [1,412,5,3,5,412,7]; var array2 = [20,12,5,5,7,310]; Enumerable.From(array1).Except(array2) |
T[] second, T compareSelector(T) |
var seq1 = Enumerable.Range(1,10).Select("{test:$%5}"); var seq2 = Enumerable.Range(1,10).Select("{test:$%2}"); seq1.Except(seq2,"$.test").Select("$.test") |
||
Intersect | Enumerable | T[] second |
var array1 = [1,412,5,3,5,412,7]; var array2 = [20,12,5,5,7,310]; Enumerable.From(array1).Intersect(array2) |
T[] second, T compareSelector(T) |
var seq1 = Enumerable.Range(1,10).Select("{test:$%5}"); var seq2 = Enumerable.Range(1,10).Select("{test:$%2}"); seq1.Intersect(seq2,"$.test").Select("$.test") |
||
SequenceEqual | Boolean | T[] second |
Enumerable.Range(1,5).SequenceEqual(Enumerable.Range(1,5)) Enumerable.Range(1,5).SequenceEqual(Enumerable.Range(1,6)) |
T[] second, T compareSelector(T) |
Enumerable.Range(1,10).Select("{test:$%5}") .SequenceEqual(Enumerable.Range(1,10).Select("{test:$%5}"),"$.test") |
||
Union | Enumerable | T[] second |
var array1 = [1,412,5,3,5,412,7]; var array2 = [20,12,5,5,7,310]; Enumerable.From(array1).Union(array2) |
T[] second, T compareSelector(T) |
var seq1 = Enumerable.Range(1,5).Select("{test:$}"); var seq2 = Enumerable.Range(3,7).Select("{test:$}"); seq1.Union(seq2,"$.test").Select("$.test") |
7. Ordering Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
OrderBy | OrderedEnumerable | () |
var array = [1,51,61,75,8,35,43]; Enumerable.From(array).OrderBy() |
T keySelector(T) |
var array = [{a:"a"},{a:"z"},{a:"k"},{a:"l"},{a:"m"},{a:"c"}]; Enumerable.From(array).OrderBy("$.a").Select("$.a") |
||
OrderByDescending | OrderedEnumerable | () |
var array = [1,51,61,75,8,35,43]; Enumerable.From(array).OrderByDescending() |
T keySelector(T) |
var array = [{a:"a"},{a:"z"},{a:"k"},{a:"l"},{a:"m"},{a:"c"}]; Enumerable.From(array).OrderByDescending("$.a").Select("$.a") |
||
ThenBy | OrderedEnumerable | T keySelector(T) |
var list = [ { a: 2, b: 4, c: 1 }, { a: 2, b: 3, c: 7 }, { a: 2, b: 3, c: 3 }, { a: 4, b: 7, c: 5 }, { a: 7, b: 3, c: 2 }, { a: 4, b: 1, c: 5 }]; Enumerable.From(list).OrderBy("$.a").ThenBy("$.c").ThenBy("$.b") .Select("$.a + ':' + $.b + ':' + $.c") |
ThenByDescending | OrderedEnumerable | T keySelector(T) |
var list = [ { a: 2, b: 4, c: 1 }, { a: 2, b: 3, c: 7 }, { a: 2, b: 3, c: 3 }, { a: 4, b: 7, c: 5 }, { a: 7, b: 3, c: 2 }, { a: 4, b: 1, c: 5 }]; Enumerable.From(list).OrderBy("$.a").ThenByDescending("$.c").ThenByDescending("$.b") .Select("$.a + ':' + $.b + ':' + $.c") |
Reverse | Enumerable | () |
Enumerable.Range(1,10).Reverse() |
Shuffle | Enumerable | () |
Enumerable.Range(1,10).Shuffle() |
8. Grouping Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
GroupBy | Enumerable<Grouping> | T keySelector(T) |
Enumerable.Range(1,5).GroupBy("$%2==0") .Select("$.Key() + ':' + $.ToString('-')") |
T keySelector(T), T elementSelector(T) |
Enumerable.Range(1,5).GroupBy("$%2==0","$*10") .Select("$.Key() + ':' + $.ToString('-')") |
||
Enumerable | T keySelector(T), T elementSelector(T), T resultSelector(T, Enumerable) |
Enumerable.Range(1,5) .GroupBy("$%2==0","","key,e=>key+':'+e.ToString('-')") |
|
TK keySelector(T), TE elementSelector(T), TR resultSelector(T, Enumerable),TC compareSelector(TK) |
Enumerable.From([{d:new Date(2000,1,1),i:0},{d:new Date(2000,1,1),i:1}]) .GroupBy("$.d","","key,e=>key+':'+e.Select('$.i').ToArray()","$.toString()") |
||
PartitionBy | Enumerable<Grouping> | T keySelector(T) |
Enumerable.From([1,2,2,3,3,2,1,1]).PartitionBy("i=>i") .Select("$.Key() + ':' + $.ToString('-')") |
T keySelector(T), T elementSelector(T) |
Enumerable.From([1,2,2,3,3,2,1,1]).PartitionBy("i=>i","i=>i*100") .Select("$.Key() + ':' + $.ToString('-')") |
||
Enumerable | T keySelector(T), T elementSelector(T), T resultSelector(T, Enumerable) |
Enumerable.From([1,2,2,3,3,2,1,1]) .PartitionBy("i=>i","i=>i","key,e=>key+':'+e.ToString('-')") |
|
TK keySelector(T), TE elementSelector(T), TR resultSelector(T, Enumerable), TC compareSelector(TK) |
Enumerable.From([{d:new Date(2000,1,1),i:0},{d:new Date(2000,1,1),i:1}]) .PartitionBy("$.d","","key,e=>key+':'+e.Select('$.i').ToArray()","$.toString()") |
||
BufferWithCount | Enumerable<Array> | int count |
Enumerable.Range(1,10).BufferWithCount(4) |
9. Aggregate Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Aggregate | T | T func(T, T) |
Enumerable.Range(1,5).Aggregate("a,b=>a*b") |
T seed, T func(T, T) |
Enumerable.Range(1,10).Aggregate(100,"a,b=>a+b") |
||
T seed, T func(T, T), T resultSelector(T) |
Enumerable.Range(1,10).Aggregate(100,"a,b=>a+b","$*10") |
||
Average | Number | () |
Enumerable.Range(1,10).Average() |
Number selector(T) |
Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}]) .Average("$.b") |
||
Count | Number | () |
Enumerable.Range(1,10).Count() |
bool predicate(T) |
Enumerable.Range(1,10).Count("$>7") |
||
Max | Number | () |
Enumerable.Range(1,10).Max() |
Number selector(T) |
Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}]) .Max("$.b") |
||
Min | Number | () |
Enumerable.Range(1,10).Min() |
Number selector(T) |
Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}]) .Min("$.b") |
||
MaxBy | T | Number selector(T) |
Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}]) .MaxBy("$.b").a |
MinBy | T | Number selector(T) |
Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}]) .MinBy("$.b").a |
Sum | Number | () |
Enumerable.Range(1,10).Sum() |
Number selector(T) |
Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}]) .Sum("$.b") |
10. Paging Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
ElementAt | T | int index |
Enumerable.Range(1,10).ElementAt(3) |
ElementAtOrDefault | T | int index, T defaultValue |
Enumerable.Range(1,10).ElementAtOrDefault(15,-1) |
First | T | () |
Enumerable.Range(1,10).First() |
bool predicate(T) |
Enumerable.Range(1,10).First("$>4") |
||
FirstOrDefault | T | T defaultValue |
Enumerable.Empty().FirstOrDefault(-1) |
T defaultValue, bool predicate(T) |
Enumerable.Range(1,10).FirstOrDefault(-1,"$>15") |
||
Last | T | () |
Enumerable.Range(1,10).Last() |
bool predicate(T) |
Enumerable.Range(1,10).Last("$<4") |
||
LastOrDefault | T | T defaultValue |
Enumerable.Empty().LastOrDefault(-1) |
T defaultValue, bool predicate(T) |
Enumerable.Range(1,10).LastOrDefault(-1,"$>15") |
||
Single | T | () |
Enumerable.From("a").Single() |
bool predicate(T) |
Enumerable.Range(1,10).Single("$==4") |
||
SingleOrDefault | T | T defaultValue |
Enumerable.Empty().SingleOrDefault(-1) |
T defaultValue, bool predicate(T) |
Enumerable.Range(1,10).SingleOrDefault(-1,"$==15") |
||
Skip | Enumerable | int count |
Enumerable.Range(1,10).Skip(5) |
SkipWhile | Enumerable | bool predicate(T) |
Enumerable.Range(1,10).SkipWhile("$<=5") |
bool predicate(T, int index) |
Enumerable.Range(1,10).SkipWhile("value,index=>value+index<=5") |
||
Take | Enumerable | int count |
Enumerable.Range(1,10).Take(5) |
TakeWhile | Enumerable | bool predicate(T) |
Enumerable.Range(1,10).TakeWhile("$<=5") |
bool predicate(T, int index) |
Enumerable.Range(1,10).TakeWhile("value,index=>value+index<=5") |
||
TakeExceptLast | Enumerable | () |
Enumerable.Range(1,10).TakeExceptLast() |
Number count |
Enumerable.Range(1,10).TakeExceptLast(3) |
||
TakeFromLast | Enumerable | Number count |
Enumerable.Range(1,10).TakeFromLast(3) |
IndexOf | int | T item |
Enumerable.Range(1,10).IndexOf(3) Enumerable.Range(1,10).IndexOf(15) |
LastIndexOf | int | T item |
Enumerable.From([1,2,3,2,5]).LastIndexOf(2) Enumerable.From([1,2,3,2,5]).LastIndexOf(20) |
11. Convert Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
ToArray | Array | () |
Enumerable.Range(1,10).ToArray() |
ToLookup | Lookup | TKey keySelector(T) |
var lookup = Enumerable.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"]) .ToLookup("$.match(/\\.(.+$)/)[1]"); lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()") |
TKey keySelector(T), TElement elementSelector(T) |
var lookup = Enumerable.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"]) .ToLookup("$.match(/\\.(.+$)/)[1]","$.match(/(.+)\\.[^.]+$/)[1]"); lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()") |
||
TKey keySelector(T), TElement elementSelector(T), TCompare compareSelector(TKey) |
var lookup = Enumerable.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"]) .ToLookup("","","$.match(/\\.(.+$)/)[1]"); lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()") |
||
ToObject | Object | String keySelector(T), T elementSelector(T) |
var obj = Enumerable.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}") .ToObject("$.id","$.value"); Enumerable.From(obj).Select("$.Key + ':' + $.Value") |
ToDictionary | Dictionary | TKey keySelector(T), TElement elementSelector(T) |
var dict = Enumerable.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}") .ToDictionary("$.id","$.value"); dict.ToEnumerable().Select("$.Key + ':' + $.Value") |
TKey keySelector(T), TElement elementSelector(T), TCompare compareSelector(TKey) |
var dict = Enumerable.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}") .ToDictionary("$","$.value","$;id"); dict.ToEnumerable().Select("$.Key.id + ':' + $.Value") |
||
ToJSON | String | () |
// ToJSON only work Native JSON support browser or include json2.js Enumerable.From([{Foo:1, Bar:'z'},{Foo:5, Bar:null}]).ToJSON() |
TResult replacer(TKey, TValue) |
Enumerable.From(["a","b","c"]) .ToJSON(function(k,v){return (typeof v === 'object') ? v : v.toString().toUpperCase()}) |
||
TResult replacer(TKey, TValue), Number space |
Enumerable.Range(1, 5).ToJSON(null, 4) |
||
ToString | String | () |
Enumerable.Range(0,10).ToString() |
String separator |
Enumerable.Range(0,10).ToString("-") |
||
String separator, T selector(T) |
Enumerable.From([{k:"foo"},{k:"bar"}]).ToString("-","$.k") |
12. Action Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Do | Enumerable | void action(T) |
Enumerable.Range(1,10).Do(function(i){ document.write('do:'+ i +'|');}) .Where("$%2==0") |
void action(T, index) |
Enumerable.Range(1,10).Do(function(value,index){ document.write("do:" + index + '-' + value + "<br/>");}) .OrderBy("").Take(2) |
||
ForEach | void | void action(T) |
Enumerable.Range(1,10).ForEach(function(i){ document.write(i);}) |
void action(T, index) |
Enumerable.Range(1,10).ForEach(function(value,index){ document.write(index + ':' + value + "<br/>");}) |
||
bool func(T) |
Enumerable.Range(1, 10).ForEach(function(i) { if (i % 2 == 0) return; // continue if (i > 6) return false; // break document.write(i + "<br/>"); }) |
||
bool func(T, index) |
Enumerable.Repeat("aaa", 10).ForEach(function(s,index) { if (index % 2 == 0) return; // continue if (index > 6) return false; // break document.write(index + s + "<br/>"); }) |
||
Write | void | () |
Enumerable.Range(1,10).Write() |
String separator |
Enumerable.Range(1,10).Write("-") |
||
String separator, T selector(T) |
Enumerable.From([{a:"foo",b:1},{a:"bar",b:3}]) .Write("-","$.a + ':' + $.b") |
||
WriteLine | void | () |
Enumerable.Range(1,10).WriteLine() |
T selector(T) |
Enumerable.From([{a:"foo",b:1},{a:"bar",b:3}]) .WriteLine("$.a + ':' + $.b") |
||
Force | void | () |
Enumerable.Range(1,10).Trace().Force() |
13. Functional Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Let | Enumerable | Enumerable<TR> func(Enumerable<T>) |
Enumerable.Range(1,10).Let(function(x){return x.Zip(x.Skip(1),"x,y=>x + ':' + y")}) |
Share | Enumerable | () |
var share = Enumerable.Range(1,10).Share(); share.Take(4).WriteLine(); document.write("--- <br>"); share.Skip(2) |
MemoizeAll | Enumerable | () |
var mem = Enumerable.Range(1,10) .Do("document.write('--->' + $ + '<br>')").MemoizeAll(); mem.Where("$%2==0").WriteLine(); document.write("--- <br>"); mem.Where("$%2==0") |
14. Error Handling Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Catch | Enumerable | void handler(Error) |
Enumerable.Range(1,10).Select(function(i){ if(i == 5) throw new Error("enumerable_error"); else return i;}) .Catch("document.write($.message)") |
Finally | Enumerable | void finallyAction() |
Enumerable.Range(1,5).Finally(function(){document.write("finally")}) |
15. For Debug Methods
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Trace | Enumerable | () |
// Trace is output to console.log Enumerable.Range(1,10).Trace().Force() |
String message |
Enumerable.Range(1,10).Trace("Gen").Where("$%3==0").Trace("Filtered").Force() |
||
String message, T selector(T) |
Enumerable.From([{a:"foo",b:1},{a:"bar",b:3}]) .Trace("Gen","$.a").Force() |
16. IEnumerator
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
GetEnumerator | IEnumerator | () |
Enumerable.Range(1,10).GetEnumerator() |
MoveNext | Boolean | () |
Enumerable.Range(1,10).GetEnumerator().MoveNext() |
Current | T | () |
Enumerable.Range(1,10).GetEnumerator().Current() |
Dispose | void | () |
Enumerable.Range(1,10).GetEnumerator().Dispose() |
17. Dictionary
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Add | void | TKey key, TValue value |
Enumerable.Empty().ToDictionary().Add(1, 'aaa') |
Get | TValue | TKey key |
Enumerable.Empty().ToDictionary().Get(1) |
Set | Boolean | TKey key, TValue value |
Enumerable.Empty().ToDictionary().Set(1, 'zzz') |
Contains | Boolean | TKey key |
Enumerable.Empty().ToDictionary().Contains(1) |
Clear | void | () |
Enumerable.Empty().ToDictionary().Clear() |
Remove | void | TKey key |
Enumerable.Empty().ToDictionary().Remove(1) |
Count | Number | () |
Enumerable.Empty().ToDictionary().Count() |
ToEnumerable | Enumerable | () |
var dict = Enumerable.Empty().ToDictionary(); dict.Add("foo", 10); dict.Add("bar", 200); dict.ToEnumerable().Select("$.Key + ':' + $.Value") |
18. Lookup
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Get | Enumerable<TElement> | TKey key |
Enumerable.From([{x:1,s:'a'},{x:1,s:'z'}]) .ToLookup("$.x").Get(1).Select("$.x + ':' + $.s") |
Contains | Boolean | TKey key |
Enumerable.From([{x:1,s:'a'},{x:1,s:'z'}]) .ToLookup("$.x").Contains(1) |
Count | Number | () |
Enumerable.Range(1,5).ToLookup().Count() |
ToEnumerable | Enumerable<Grouping> | () |
Enumerable.From([{a:1,s:'foo'},{a:1,s:'bar'},{a:2,s:'zzzzz'}]) .ToLookup("$.a").ToEnumerable() .Select("$.Key() + ':' + $.Select('$.s').ToString('-')") |
19. Grouping(inherit Eunmerable)
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
Key | TKey | () |
Enumerable.From([{id:"foo",x:10},{id:"bar",x:20},{id:"foo",x:100}]) .GroupBy("$.id").ToArray()[0] // grouping .Key() |
All Enumerable Methods | - | - |
var grouping = Enumerable.From([{id:"foo",x:10},{id:"foo",x:25},{id:"foo",x:100}]) .GroupBy("$.id").ToArray()[0]; grouping.Where("$.x % 10 == 0").Select("$.id + ':' + $.x") |
20. jQuery plugin
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
TojQuery | jQuery | () |
// Enumerable.Repeat("foo",10).TojQuery() |
toEnumerable | Enumerable<jQuery> | () |
// $("div").toEnumerable() |
21. RxJS Binding
Phương thức | Kiểu trả về | Tham số | Ví dụ (Click Code) |
---|---|---|---|
ToObservable | Rx.Observable | () |
// Enumerable.Range(1,10).ToObservable() |
ToEnumerable | Enumerable | () |
// Rx.Observable.Range(1,10).ToEnumerable() |
Hy vọng thư viện hữu ích sẽ giúp các bạn lập trình tốt hơn trong javascript
Sơn20