Compiler d'autres réponses:
Objet
var test = {};
Lorsque vous utilisez un nombre comme clé de nouvelle propriété, le nombre se transforme en chaîne:
test[2300] = 'Some string';
console.log(test['2300']);
// Output: 'Some string'
Lors de l'accès à la valeur de la propriété en utilisant le même nombre, le nombre est à nouveau transformé en chaîne:
console.log(test[2300]);
// Output: 'Some string'
Lorsque vous récupérez les clés de l'objet, cependant, elles ne seront pas transformées en nombres:
for (var key in test) {
console.log(typeof key);
}
// Output: 'string'
Carte
ECMAScript 6 permet l'utilisation de l'objet Map ( documentation , comparaison avec Object ). Si votre code est destiné à être interprété localement ou si la table de compatibilité ECMAScript 6 semble suffisamment 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'