Articles of programmation fonctionnelle

La meilleure façon de regrouper des éléments de tableau adjacent par valeur

Supposons que nous avons une gamme de valeurs: [5, 5, 3, 5, 3, 3] Quelle est la meilleure façon de les regrouper en valeur et en adjacence. Le résultat devrait être le suivant: [ [5,5], [3], [5], [3,3] ] Bien sûr, je peux parcourir le réseau source et rechercher l'élément suivant / précédent, et s'ils […]

Javascript – Comment transférer l'objet d'origine à la fonction de rappel

Le problème que j'ai en particulier concerne spécifiquement D3.js, mais j'ai eu des problèmes similaires avant et j'ai toujours fini par utiliser un hack pour le contourner. J'ai une classe qui contient un ensemble d'objets. Il existe une fonction pour ajouter de nouveaux objets à partir d'un fichier CSV. En utilisant d3.csv . Cette fonction […]

Est-ce que JavaScript prend en charge une application de fonction partielle?

En consultant l'article Wikipedia sur les fonctions de première classe, il existe une belle table de support linguistique pour différents aspects de la programmation fonctionnelle: http://en.wikipedia.org/wiki/First-class_function#Language_support JavaScript est répertorié comme n'ayant pas d'application de fonction partielle. Cependant, il existe des techniques pour créer une fonction qui renvoie une fonction qui, avec certains paramètres stockés dans […]

JavaScript: crée un tableau de paires de valeurs comme un tableau de valeurs

Existe-t-il un moyen élégant et fonctionnel de transformer ce tableau? [ 1, 5, 9, 21 ] Dans ce [ [1, 5], [5, 9], [9, 21] ] Je sais que je pourrais pour forEach tableau et collecter les valeurs pour créer un nouveau tableau. Existe-t-il une façon élégante de le faire dans _.lodash sans utiliser un […]

Comment utiliser Math.max, etc. comme fonctions d'ordre supérieur

Bref, cela fonctionne: [1, 2, 3].reduce(function (a, b) { return Math.max(a, b); }); => 3 Mais ce n'est pas le cas: [1, 2, 3].reduce(Math.max); => NaN Pénétration pure. Ceci est dans Firefox 3.5.9, ce que je supposément utilise l' implémentation standard mozilla de réduction , FWIW.

Underscore.js: comment chaîner des fonctions personnalisées

En utilisant Underscore.js , je peux écrire les éléments suivants qui renvoient 42 : _([42, 43]).chain() .first() .value() J'ai une fonction personnalisée, pas partie de Underscore.js appelé double() : function double(value) { return value * 2; }; J'aimerais pouvoir appeler cette fonction dans une chaîne de soulignement, comme si elle faisait partie du soulignement. J'aimerais […]

Comment mettre à jour l'élément dans la liste avec ImmutableJS?

Voici ce que disaient les officiels updateIn(keyPath: Array<any>, updater: (value: any) => any): List<T> updateIn(keyPath: Array<any>, notSetValue: any, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, notSetValue: any, updater: (value: any) => any): List<T> Il n'y a aucun moyen que le développeur Web normal (programmeur […]

Avantage de la programmation fonctionnelle réactive sur les auditeurs d'événements

J'ai beaucoup entendu parler de la programmation fonctionnelle réactive et j'ai décidé de vérifier quelle est la grosse affaire. En parcourant la documentation de bacon.js, il semble que la principale différence est que, au lieu de configurer un auditeur d'événements sur un composant, je crée un flux d'événements sur celui-ci et passe le gestionnaire d'événements […]

Meilleure solution pour attendre que tous les rappels ajax soient exécutés

Imaginez que nous avons des sources à demander par ajax. Je souhaite effectuer certaines actions lorsque tous les rappels sont déclenchés. Comment cela peut être fait en plus de cette approche: (function($){ var sources = ['http://source1.com', 'http://source2.com'], guard = 0, someHandler = function() { if (guard != sources.length) { return; } //do some actions }; […]

Quelle est l'alternative in situ à Array.prototype.filter ()

J'ai un tableau dont j'aimerais supprimer certains éléments. Je ne peux pas utiliser Array.prototype.filter() , car je souhaite modifier le tableau en place (car il enregistre une allocation de mémoire et, plus important pour moi, rend le code plus simple dans mon cas d'utilisation). Existe-t-il une alternative in Array.prototype.forEach() pour filter que je peux utiliser, […]