Compilation d'autres réponses :
Objet
var test = {};
Lorsqu'on utilise un nombre comme clé d'une nouvelle propriété, le nombre se transforme en chaîne de caractères :
test[2300] = 'Some string';
console.log(test['2300']);
// Output: 'Some string'
Lorsque l'on accède à la valeur de la propriété en utilisant le même numéro, celui-ci est à nouveau transformé en chaîne de caractères :
console.log(test[2300]);
// Output: 'Some string'
Cependant, lorsque l'on récupère les clés de l'objet, elles ne seront pas transformées en chiffres :
for (var key in test) {
console.log(typeof key);
}
// Output: 'string'
Carte
ECMAScript 6 permet d'utiliser l'objet Map ( documentation , une comparaison avec l'objet ). Si votre code est censé être interprété localement ou la table de compatibilité ECMAScript 6 semble assez verte pour vos besoins, envisagez d'utiliser une carte :
var test = new Map();
test.set(2300, 'Some string');
console.log(test.get(2300));
// Output: 'Some string'
Aucune conversion de type n'est effectuée, pour le meilleur et pour le pire :
console.log(test.get('2300'));
// Output: undefined
test.set('2300', 'Very different string');
console.log(test.get(2300));
// Output: 'Some string'