179 votes

Équivalent JavaScript à C# LINQ Select

Suite à cette question ici :

Utiliser la liaison checked dans knockout avec une liste de cases à cocher coche toutes les cases à cocher

J'ai créé quelques cases à cocher en utilisant knockout qui permettent une sélection à partir d'un tableau. Fiddle fonctionnel pris du post ci-dessus :

http://jsfiddle.net/NsCXJ/

Y a-t-il un moyen simple de créer un tableau uniquement avec les identifiants des fruits ?

Je suis plus habitué à C# où je ferais quelque chose comme selectedFruits.select(fruit=>fruit.id);

Y a-t-il une méthode/fonction prête à l'emploi pour faire quelque chose de similaire avec javascript/jquery ? Ou la meilleure option serait-elle de parcourir la liste et de créer un second tableau ? Je compte renvoyer le tableau au serveur en JSON, donc j'essaie de minimiser les données envoyées.

4voto

g4s8 Points 1103

L'équivalent le plus similaire en C# à Select serait une fonction map. Utilisez simplement :

var ids = selectedFruits.map(fruit => fruit.id);

pour sélectionner tous les identifiants du tableau selectedFruits.

Cela ne nécessite aucune dépendance externe, juste du pur JavaScript. Vous pouvez trouver la documentation sur map ici : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

3voto

Michael Baarz Points 41

J'ai construit une bibliothèque Linq pour TypeScript sous TsLinq.codeplex.com que vous pouvez également utiliser pour du javascript pur. Cette bibliothèque est 2 à 3 fois plus rapide que Linq.js et contient des tests unitaires pour toutes les méthodes Linq. Peut-être pourriez-vous la passer en revue.

0voto

Gruff Bunny Points 4314

Jetez un coup d'œil à underscore.js qui propose de nombreuses fonctions similaires à Linq. Dans l'exemple que vous donnez, vous utiliseriez la fonction map.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X