Des portions de soulignement sont inspirées par ou empruntés fonctionnelle, Prototype.js Oliver Steele et Micro-Templating de John Resig.
Support de la programmation fonctionnelle est ajouté, mais sans étendre l'un des objets intégrés dans JavaScript.
Soulignement fournit des fonctions de 60 impairs qui soutiennent à la fois les suspects habituels: fonctionnelles, sélectionnez la carte, invoquer & mdash; ainsi que des aides plus spécialisés: liaison fonction JavaScript, gabarits, les tests de l'égalité profonde, et ainsi de suite. Il délégués à des fonctions intégrées, si présents navigateurs, afin modernes vont utiliser les implémentations natives de forEach, carte, réduire, filtre, tous les, les uns et indexOf.
Ports de Underscore.js sont disponibles pour:
PHP
Python
Perl
Quoi de neuf dans cette version:
- Ajoute une méthode de _.create, comme allégée version de Object.create.
- Travaux autour d'un bug iOS qui peut causer mal isArrayLike être JIT-ed. Corrige également un bug lors du passage de 0 à isArrayLike.
Quoi de neuf dans la version 1.8.2:
- Corrections / modifie certains vieux-Internet-Explorer et comportement de cas limite liée.
Ce qui est nouveau dans la version 1.7.0:
- Par souci de cohérence et la vitesse à travers les navigateurs, soulignement ignore maintenant méthodes de tableau natives pour forEach, carte, de réduire, reduceRight, filtre, tous, les uns, indexOf et lastIndexOf. & Quot; Sparse & quot; les tableaux sont officiellement morts dans soulignement.
- Ajout _.iteratee de personnaliser les itérateurs utilisés par les fonctions de collecte. De nombreuses méthodes de soulignement auront un argument de chaîne pour faciliter les recherches _.property de style, un objet pour le filtrage _.where de style, ou une fonction comme un rappel personnalisé.
- Ajouté _.before en contrepartie de _.after.
- Ajout _.negate pour inverser la valeur de vérité d'un prédicat passé-dans.
- Ajout _.noop en fonction vide de l'espace réservé à portée de main.
- _. IsEmpty travaille maintenant avec des objets arguments.
- _. A maintenant gardes contre des objets nullish.
- les méthodes de base de Override comme chacun et certains et ils vont être utilisés en interne par d'autres fonctions de soulignement trop.
- Les fonctions d'échappement gérer backticks (`), pour faire face à un IE ≤ 8 bug.
- Par souci de cohérence, _.union et _.difference maintenant travaillons uniquement avec des tableaux et pas args variadique.
- _. Memoize expose le cache des valeurs memoized comme une propriété sur la fonction renvoyée.
- _. Iteratee choix et les arguments de contexte accepte pour un rappel plus avancé.
- modèles de soulignement acceptent plus un objet de données initial. _.template renvoie toujours une fonction maintenant.
Quoi de neuf dans la version 1.5.0:
- Une carte de source est désormais fourni pour faciliter le débogage des la version de production minified de soulignement.
- La fonction par défaut maintenant ne remplace les valeurs indéfinies, les pas nulles.
- Suppression de la possibilité d'appeler _.bindAll sans nom de la méthode arguments. Il est à peu près toujours plus sage de liste blanche les noms des méthodes que vous souhaitez lier.
- Suppression de la possibilité d'appeler _.after avec un nombre de invocation de zéro. Le nombre minimum d'appels est (naturellement) maintenant 1.
Ce qui est nouveau dans la version 1.4.4:
- Ajouté _.findWhere, pour trouver le premier élément dans une liste qui correspond à un ensemble particulier de clés et de valeurs.
- Ajout _.partial, pour appliquer partiellement une fonction sans changer sa référence à cette dynamique.
- bind simplifié en supprimant certains cas de pointe impliquant des fonctions constructeur. En bref:. Ne _.bind vos constructeurs
- Une optimisation mineure à invoquer.
- Correction d'un bug dans la version minified en raison de l'optimisation minifier-away mal isFunction.
Quoi de neuf dans la version 1.4.3:
- Ajout d'un iterator _.identity par défaut et countBy groupBy.
- La fonction uniq peut maintenant prendre tableau, iterator, contexte que la liste d'arguments.
- Les temps fonctionnent maintenant retourne le tableau mappé des résultats d'itération.
- simplifié et bugs corrigés dans l'accélérateur.
Quoi de neuf dans la version 1.4.2:
- Pour la compatibilité ascendante, est retourné à pré-1.4. 0 comportement lorsque passant null à des fonctions d'itération. Ils deviennent maintenant pas d'habitation à nouveau.
Quoi de neuf dans la version 1.4.0:
- Ajout d'une fonction de paires, pour tourner un objet JavaScript dans [clé, valeur] paires ... ainsi que d'une fonction d'objet, pour convertir un tableau de [clé, valeur] paires dans un objet.
- Ajout d'une fonction countBy, pour compter le nombre d'objets dans une liste qui répondent à certains critères.
- Ajout d'une fonction d'inversion, pour effectuer une simple inversion des clés et des valeurs dans un objet.
- Ajout d'une fonction où, pour les cas simples de filtrer une liste des objets avec des valeurs spécifiques.
- Ajout d'une fonction omettre, pour filtrer un objet à supprimer certaines touches.
- Ajout d'une fonction aléatoire, pour retourner un nombre aléatoire dans une plage donnée.
- _. Debounce'd fonctions renvoient désormais leur dernière valeur mise à jour, tout comme les fonctions _.throttle'd faire.
- La fonction sortBy dirige maintenant un algorithme de tri stable.
- Ajout de l'option de fromIndex facultatif à indexOf et lastIndexOf.
- & quot; Sparse & quot; tableaux ne sont plus pris en charge dans les fonctions d'itération de soulignement. Utilisez un pour la place (ou, mieux encore, un objet).
- Les fonctions min et max peut maintenant être appelé sur de très grands tableaux.
- Interpolation dans les modèles représente désormais nulle et non définie comme la chaîne vide.
Ce qui est nouveau dans la version 1.3.2:
- Ajout de la fonction de sélection, qui vous permet de filtrer un littéral d'objet avec une liste blanche des noms de propriété autorisées.
- Ajout de la fonction de résultat, pour plus de commodité lorsque vous travaillez avec des API qui permettent soit des fonctions ou des propriétés brutes.
- Ajout de la fonction de isFinite, parce que parfois, sachant que la valeur est un nombre est tout simplement pas assez.
- La fonction sortBy peut désormais également être transmis le nom d'une propriété de chaîne à utiliser comme l'ordre de tri sur chaque objet.
- uniq fixes pour travailler avec les tableaux creux.
- La fonction de différence effectue maintenant un peu profonde aplatir au lieu d'une profonde l'un pour le calcul des différences de tableau.
- La fonction anti-rebond prend désormais un paramètre immédiate, ce qui entraînera le rappel au feu sur le leader à la place du bord de fuite.
Ce qui est nouveau dans la version 1.3.1:
- Ajout d'une fonction de _.has, comme plus sûr façon d'utiliser hasOwnProperty.
- Ajout _.collect comme un alias pour _.map. Smalltalkiens, réjouissez-vous.
- revenue une vieille changement afin que _.extend sera correctement copier des clés avec des valeurs indéfinies nouveau.
- Correction d'arrêter échapper barres obliques dans interpolations dans _.template.
Quoi de neuf dans la version 1.3.0:.
- AMD (RequireJS) soutien Retiré de soulignement
Quoi de neuf dans la version 1.2.4:
- peut (et devrait probablement) écrire _.chain (liste) au lieu de _ (liste) .chain ().
- Correction de caractères échappés dans les modèles de soulignement, et pour soutenir les personnalisations de _.templateSettings qui ne définissent un ou deux des expressions rationnelles nécessaires.
- Correction de passer un tableau comme premier argument à une fonction de _.wrap'd.
- Amélioration de la compatibilité avec ClojureScript, ce qui ajoute une fonction d'appel à String.prototype.
Ce qui est nouveau dans la version 1.2.3:
- portée dynamique est aujourd'hui conservé pour _.template compilé fonctions, de sorte que vous pouvez utiliser la valeur de cette si vous aiment.
- Support de tableau de Sparse _.indexOf, _.lastIndexOf.
- Les deux _.reduce et _.reduceRight peut maintenant être transmis une valeur explicitement définie.
Quoi de neuf dans la version 1.2.2:
- tweaks a continué à la sémantique _.isEqual. Maintenant primitives JS sont considérés comme équivalents à leurs versions emballés, et les tableaux sont comparés par leurs propriétés numériques uniquement.
- _. Échapper ne cherche plus à être intelligent de ne pas double échapper les entités HTML déjà échappé. Maintenant, il échappe de justesse indépendamment.
- Dans _.template, vous pouvez maintenant laisser des points-virgules de déclarations évaluées si vous le souhaitez: & # x3C;}%)% & # X3e; .
- _ après (callback, 0) déclenche désormais le rappel immédiatement, faire & quot;. Après & quot; plus facile à utiliser avec les API asynchrones.
Ce qui est nouveau dans la version 1.2.1:
- Plusieurs corrections de bugs importants pour _.isEqual, qui devrait maintenant faire mieux sur Arrays mutées, et sur la non-Array objets avec des propriétés de longueur.
- peut maintenant _.groupBy (liste, «propriété») comme un raccourci pour le regroupement de valeurs par une propriété commune en particulier.
- _. Throttle'd fonctions feu dès maintenant invocation, et sont le taux limité par la suite.
- La plupart des _.is [Type] vérifie plus ducktype.
- La fonction de _.bind fonctionne maintenant également sur les constructeurs, a-la ES5 ... mais vous ne voudrait jamais utiliser _.bind sur une fonction constructeur.
- _. Clone plus enroule types non-objets dans des objets.
- _. _.filter Trouver et sont maintenant les noms préférés pour _.detect et _.select.
Quoi de neuf dans la version 1.2.0:
- La fonction _.isEqual prend désormais en charge une véritable égalité profonde comparaisons, avec des contrôles pour les structures cycliques, merci de Kit Cambridge.
- modèles de soulignement prennent désormais en charge HTML échapper interpolations, en utilisant & # x3C;% -% & # ... X3e; syntaxe.
- Ryan Tenney contribué _.shuffle, qui utilise un Fisher-Yates modifié pour vous donner une copie mélangées d'un tableau.
- _. Uniq peut maintenant être adopté un itérateur en option, de déterminer par quels critères un objet doit être considéré comme unique.
- _. Durer prend maintenant un argument optionnel qui renverra les N derniers éléments de la liste.
- Une nouvelle fonction a été ajoutée _.initial, comme un miroir de _.rest, qui renvoie toutes les valeurs initiales de la liste (sauf le dernier N).
Ce qui est nouveau dans la version 1.1.7:
- Ajouté _.groupBy, qui regroupe une collection en groupes d'articles similaires.
- _.union ajoutée et _.difference, pour compléter la (re-nommé) _.intersection.
- Diverses améliorations pour le support des matrices creuses. _.toArray retourne maintenant un clone, si elle est directement passé un tableau. _.functions maintenant renvoie également les noms des fonctions qui sont présents dans la chaîne de prototype.
Ce qui est nouveau dans la version 1.1.6:
- Ajout _.after, qui sera de retour d'une fonction qui ne court après la première étant appelé un certain nombre de fois. _.invoke peut maintenant prendre une référence de fonction directe. _.every exige maintenant une fonction d'itération à être adoptée, ce qui reflète l'API ECMA5. _.extend aucun des clés plus longues copies lorsque la valeur est définie. _.bind maintenant des erreurs en essayant de lier une valeur indéfinie.
Quoi de neuf dans la version 1.1.4:
- Amélioration de la conformité avec les méthodes de Array de ES5 en passant null comme une valeur. _.wrap définit maintenant correctement ce pour la fonction enveloppé. _.indexOf prend désormais un drapeau option pour trouver l'indice d'insertion dans un tableau qui est garantie d'être déjà triés.
- Éviter l'utilisation de .callee, pour permettre _.isArray fonctionne correctement en mode strict de ES5.
Quoi de neuf dans la version 1.1.3:
- Dans CommonJS, soulignement peut maintenant être nécessaire avec juste :
- _ var = require (& quot; souligner & quot;). Fonctions de _.throttle ajoutée et _.debounce.
- _.breakLoop Suppression, en faveur d'un non-break-mesure chaque implémentation ECMA5 de style - Cela supprime le try / catch, et vous allez maintenant avoir de meilleures traces de pile pour les exceptions qui sont jetés dans un itérateur de soulignement. Amélioration de la famille istype de fonctions pour une meilleure interopérabilité avec des objets d'accueil d'Internet Explorer. _.template maintenant échappe correctement barres obliques inversées dans les modèles. Amélioration de la compatibilité de _.reduce avec la version de ECMA5: si vous ne passez pas une valeur initiale, le premier élément de la collection est utilisée. _.each ne renvoie plus la collection itérative, pour une meilleure cohérence avec foreach ECMA5.
Ce qui est nouveau dans la version 1.0.4:
- _ fonction Memoize, qui peut être utilisé pour. accélérer les calculs répétés coûteux en mettant en cache les résultats.
Quoi de neuf dans la version 1.0.2:.
- _.isArguments fixes pour Opera
Commentaires non trouvées