Je recherche une bibliothèque JavaScript qui me permettra d'interroger des objets JSON complexes en utilisant une syntaxe de type LINQ. Une recherche rapide a trouvé quelques options prometteuses qui semblent offrir ce dont j'ai besoin:
- Quelqu'un a-t-il une expérience de leur utilisation?
- Quels sont les avantages et les inconvénients?
- La performance est-elle comparable?
- La syntaxe de transmission de fonctions de LINQ to JavaScript offre-t-elle des avantages cachés (personnellement, je trouve la syntaxe de jLinq plus attrayante à première vue)?
- Qu'est-ce qui vous manque dans l'un ou l'autre des projets?
- Avez-vous déjà essayé de contacter les auteurs? Dans quelle mesure ont-ils été réactifs?
- Quel projet est le plus utilisé?
Je pense que ce sera le premier à être testé en profondeur.
javascript
json
linq
Tom Tresansky
la source
la source
filter
,map
et lesreduce
fonctions de tableau. La nouvelle syntaxe lambda permet de rendre le code beaucoup plus similaire au code LINQ.Linq-Collections
( npmjs.com/package/linq-collections ). Il utilise des exécutions différées et des tonnes d'optimisations internes pour être extrêmement rapide. Basé sur la norme de Microsoft (si vous connaissez C # Linq, vous connaissez linq-collections)Réponses:
Avez-vous déjà vu Rx pour Javascript ? C'est ce que tu veux.
la source
Vous pouvez consulter linq.js . Il suit la syntaxe lambda .NET et semble bien intégré dans un environnement Microsoft.
LINQ pour JavaScript - http://linqjs.codeplex.com/
Avantages
Les inconvénients
la source
Les opérateurs Linq les plus basiques et les plus fréquemment utilisés sont très couramment définis dans les bibliothèques JS largement utilisées. Ils ont juste des noms différents (en fait, ils ont des noms plus traditionnels que dans Linq).
Select
devientmap
,Where
devientfilter
,First
etFirstOrDefault
devenir[0]
.Presque aucune bibliothèque que je connaisse (y compris celles auxquelles vous avez lié) ne se soucie de rendre l'implémentation paresseuse comme dans .NET Linq, elles évaluent juste immédiatement à l'aide de tableaux.
Pour un très bel ensemble complet d'opérations de liste fonctionnelle, essayez: http://osteele.com/sources/javascript/functional/
la source
a1.filter(function(e) { return a2.indexOf(e) == -1; })
Je recommande de jeter un oeil à underscore.js . Ce n'est pas un port LINQ direct comme certains des autres, mais c'est une expérience «semblable à LINQ» très confortable. Il prend en charge toutes les options de filtrage, de tri et de projet dont j'ai besoin et dispose d'une excellente documentation et d'un support communautaire.
En prime pour les utilisateurs de Knockout , il existe UnderscoreKO qui ajoute les méthodes de tableau d'Underscore aux tableaux observables de Knockout. Démo
la source
Je trouve personnellement les opérations LINQ / set Union, Intersect, Except et Distinct sur les énumérables dans .NET. très utile. Il existe un plugin jquery appelé jQuery Array Utilities qui fournit ces méthodes à utiliser sur les tableaux.
Exemples de code:
renvoie [1,2,3]
renvoie [1,2,3,4,5]
renvoie [2,3]
renvoie [1, 2]
la source
$ linq: http://jscriptlinq.codeplex.com/
la source
Il existe des bibliothèques de duplication qui tentent de porter LINQ vers JavaScript avec une syntaxe et des noms de méthode similaires. Cependant, dans la communauté JS, la bibliothèque qui devient vraiment populaire et qui fournit les mêmes fonctionnalités est Underscore.js .
la source
J'ai essayé la plupart d'entre eux - et j'aime vraiment $ linq: http://jscriptlinq.codeplex.com/ le meilleur. Cela fonctionne simplement comme vous vous attendez à ce que c # linq fonctionne - y compris la capacité de chaîne.
la source
Je cherche moi-même quelque chose comme ça et je suis tombé sur ...
http://www.hugoware.net/Projects/jLinq
Cela a l'air vraiment génial! Peut-être que je ne comprends tout simplement pas l'intérêt de Rx et des observables par rapport à la définition de gestionnaires d'événements via quelque chose comme jQuery.
la source
J'ai récemment créé une bibliothèque LINQ pour JavaScript. Il a implémenté la plupart des fonctions LINQ fournies par .NET et c'est la plus rapide de toutes les bibliothèques LINQ.
http://fromjs.codeplex.com/
la source