Au boulot, on s'est rendu compte que certaines données étaient réceptionnées depuis notre api en format " string " et exploitées de la même façon. En terme de performances, il vaut souvent mieux travailler au maximum avec des variables de type numérique lorsque cela est possible, sans compter le gain au niveau du transfert des données sur le réseau.
Cette fonction jQuery permet de transformer le contenu de n'importe quelle variable, array ou objet en numérique lorsque c'est possible.

Commentaires

Hum, la qualité de ce code est discutable. En effet, tout le monde s'accorde à dire qu'il ne faut pas itérer sur les éléments d'un tableau avec une boucle for/in même si, dans le cas présent, les problèmes potentiels (bug [DontEnum] pour IE

Il y a plus de 12 ans

Je te remercie pour tes commentaires pertinents. Ainsi que précisé dans le billet, cette fonction était perfectible, même si dans 95% des cas courants, elle fonctionne telle quelle. J'ai tenu compte de ceux-ci pour adapter la conversion en numérique. Par contre, je n'ai pas retenu ta première remarque afin de ne pas alourdir le code, le risque d'erreur étant nul lorsque connait un tant soit peu les données passées à la fonction. toNumeric(new String(8)) n'est certainement pas une situation logique. Libre aux utilisateurs d'étoffer le code suivant les besoins.
Quant au jQuery, il n'est bien entendu "requis" en aucune façon, j'ai modifié l'en-tête de fonction qui n'avait pas lieu d'être.

Il y a plus de 12 ans

Je te remercie à mon tour pour avoir pris en compte mes remarques. J'ajouterai que dans le cadre d'appels Ajax, quand le navigateur supporte l'objet JSON, ce type d'opération est assez simple avec Les méthodes JSON.parse et JSON.stringify et leur second paramètre qui permet d'intervenir sur le processus de sérialisation et désérialisation.

C'est documenté ici :
https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_parameter
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/parse#Description

Ce qui donne, par exemple, ce type de code pour sérialiser. Note : il ne transforme pas les les "," en "." et ne gère pas les valeurs Infinity et NaN qui ne sont pas valides en JSON :

function toNumber(key, val) {
return typeof val == "string" ? Number(val) || val: val;
}

JSON.stringify({ a: "1.7", b: "2", c: [ 8, "98","foo" ] }, toNumber);
// "{"a":1.7,"b":2,"c":[8,98,"foo"]}"

et pour désérialiser :

JSON.parse('{ "a":"1.7", "b":"2", "c":[ 8, "98", "foo" ] }', toNumber);
// { a:1.7, b: 2, c: [ 8, 98, "foo"] }

Il y a plus de 12 ans
Vous devez vous inscrire ou vous connecter pour poster un commentaire