Ich suche nach einer JavaScript-Bibliothek, mit der ich komplexe JSON-Objekte mit einer LINQ-ähnlichen Syntax abfragen kann. Eine schnelle Suche ergab einige vielversprechende Optionen, die möglicherweise das bieten, was ich brauche:
- Hat jemand Erfahrung damit?
- Was sind einige Vor- und Nachteile?
- Ist die Leistung vergleichbar?
- Bietet die Funktionsübergabesyntax von LINQ an JavaScript versteckte Vorteile (ich persönlich finde die Syntax von jLinq auf den ersten Blick ansprechender)?
- Was hat Ihnen in beiden Projekten gefehlt?
- Haben Sie jemals versucht, die Autoren zu kontaktieren? Wie reaktionsschnell waren sie?
- Welches Projekt wird häufiger eingesetzt?
Ich denke, es wird das erste sein, das gründlich ausprobiert wird.
javascript
json
linq
Tom Tresansky
quelle
quelle
filter
,map
undreduce
Array - Funktionen. Die neue Lambda-Syntax trägt dazu bei, dass der Code dem LINQ-Code viel ähnlicher wird.Linq-Collections
( npmjs.com/package/linq-collections ). Es verwendet verzögerte Ausführungen und unzählige interne Optimierungen, um blitzschnell zu sein. Basierend auf dem Microsoft-Standard (wenn Sie C # Linq kennen, kennen Sie die Linq-Sammlungen)Antworten:
Haben Sie Rx für Javascript schon gesehen? Das ist, was du willst.
quelle
Vielleicht möchten Sie linq.js auschecken . Es folgt der .NET-Lambda-Syntax und scheint gut in eine Microsoft-Umgebung integriert zu sein.
LINQ für JavaScript - http://linqjs.codeplex.com/
Vorteile
Nachteile
quelle
Die grundlegendsten und am häufigsten verwendeten Linq-Operatoren werden sehr häufig in weit verbreiteten JS-Bibliotheken definiert. Sie haben nur unterschiedliche Namen (tatsächlich haben sie traditionellere Namen als in Linq).
Select
wirdmap
,Where
wirdfilter
,First
undFirstOrDefault
werden[0]
.Fast keine mir bekannte Bibliothek (einschließlich derjenigen, mit denen Sie verlinkt haben) macht sich die Mühe, die Implementierung so faul wie in .NET Linq zu gestalten. Sie wird nur sofort mithilfe von Arrays ausgewertet.
Versuchen Sie für eine sehr schöne, vollständige Reihe von Funktionslistenoperationen: http://osteele.com/sources/javascript/functional/
quelle
a1.filter(function(e) { return a2.indexOf(e) == -1; })
Ich empfehle einen Blick auf underscore.js . Es ist kein direkter LINQ-Port wie einige der anderen, aber es ist eine sehr komfortable "LINQ-ähnliche" Erfahrung. Es unterstützt alle Filter-, Sortier- und Projektoptionen, die ich benötige, und verfügt über eine hervorragende Dokumentation und Community-Unterstützung.
Als Bonus für Knockout- Benutzer gibt es UnderscoreKO , das die Array-Methoden von Underscore zu den beobachtbaren Arrays von Knockout hinzufügt. Demo
quelle
Ich persönlich finde die LINQ / Set-Operationen Union, Intersect, Except und Distinct für Aufzählungen in .NET. sehr hilfreich. Es gibt ein jquery-Plugin namens jQuery Array Utilities , das diese Methoden für Arrays bereitstellt.
Codebeispiele:
gibt zurück [1,2,3]
gibt zurück [1,2,3,4,5]
gibt zurück [2,3]
gibt [1, 2] zurück
quelle
$ linq: http://jscriptlinq.codeplex.com/
quelle
Es gibt einige duplizierende Bibliotheken, die versuchen, LINQ mit einer ähnlichen Syntax und ähnlichen Methodennamen auf JavaScript zu portieren. In der JS-Community ist Underscore.js jedoch die Bibliothek, die immer beliebter wird und dieselbe Funktionalität bietet .
quelle
Ich habe die meisten davon ausprobiert - und ich mag $ linq: http://jscriptlinq.codeplex.com/ am besten. Es funktioniert einfach so, wie Sie es von c # linq erwarten würden - einschließlich der Kettenfähigkeit.
quelle
Ich bin selbst auf der Suche nach so etwas und bin auf ...
http://www.hugoware.net/Projects/jLinq
Das sieht wirklich toll aus! Vielleicht verstehe ich den Sinn von Rx und Observables einfach nicht im Vergleich zum Setzen von Event-Handlern über so etwas wie jQuery.
quelle
Ich habe kürzlich eine LINQ-Bibliothek für JavaScript erstellt. Es hat die meisten von .NET bereitgestellten LINQ-Funktionen implementiert und ist die schnellste aller LINQ-Bibliotheken.
http://fromjs.codeplex.com/
quelle