2010-12-13 38 views
0

J'écris mon premier plug-in jQuery pour faire la conversion d'unités. C'est un plug-in assez simple en ce sens que je prends la valeur d'origine, une unité que je veux convertir et une unité que je veux convertir en (comme des chaînes, pour l'instant). Dans le cadre de cette bibliothèque, cependant, je veux savoir quelles unités je peux convertir. Quand je l'ai fait en F #, je pouvais utiliser des unions discriminées pour représenter les types, et ensuite avoir une union "maître" discriminée qui contenait chacun de ces types. Cela m'a permis de travailler avec des unités en un seul type et de m'assurer qu'il était de type sécurisé (par exemple, je ne pouvais pas convertir des grammes en mètres).Comment représenter un ensemble de données dans le plug-in jQuery?

Comment pourrais-je faire quelque chose comme ça en JavaScript? J'ai pensé que j'aurais besoin d'utiliser JSON pour représenter tous les types de conversions possibles (peut-être pas?), Mais je ne sais pas si je comprends parfaitement comment faire quelque chose comme ça. J'apprécierais un point de départ afin que je puisse continuer mes recherches et apprendre. Je vous remercie.

Répondre

1

Vous pouvez créer un tableau comme celui-ci:

var conversions = { 
    meters: { 
     conversion: 1, 
     unit: "length" 
    }, 
    feet: { 
     conversion: 1/3.28, // 1 foot is about a third of a meter 
     unit: "length" 
    }, 
    kilograms: { 
     conversion: 1, 
     unit: "weight" 
    }, 
    pounds: { 
     conversion: 1/2.204, 
     unit: "weight" 
    } 
} 

Ensuite, tout ce que vous avez à faire est de vous assurer que ce que vous convertir en a la même unité que ce que vous convertissez à partir. Chaque type d'unité est mappé sur sa valeur en unités SI (par exemple, toutes les unités de longueur seront converties en mètres), de sorte que vous pouvez passer d'une unité d'un type à une autre.

+0

J'ai fini par prendre votre idée de convertir à un terrain d'entente commun (généralement l'unité SI commune), puis de convertir vers la nouvelle unité. C'était très facile à coder. Je compte encore sur les ficelles, mais je pense maintenant que tout le reste serait exagéré. Marquer votre réponse comme acceptée, cependant, parce que cela m'a amené à ma solution. Merci! – JasCav