J'utilise une table de hachage en JavaScript et je souhaite afficher les valeurs des éléments suivants dans une table de hachage
one -[1,10,5]
two -[2]
three -[3, 30, 300, etc.]
J'ai trouvé le code suivant. Cela fonctionne pour les données suivantes.
one -[1]
two -[2]
three-[3]
Comment attribuer des valeurs d'une à [1,2] à une table de hachage et comment y accéder?
<script type="text/javascript">
function Hash()
{
this.length = 0;
this.items = new Array();
for (var i = 0; i < arguments.length; i += 2) {
if (typeof(arguments[i + 1]) != 'undefined') {
this.items[arguments[i]] = arguments[i + 1];
this.length++;
}
}
this.removeItem = function(in_key)
{
var tmp_value;
if (typeof(this.items[in_key]) != 'undefined') {
this.length--;
var tmp_value = this.items[in_key];
delete this.items[in_key];
}
return tmp_value;
}
this.getItem = function(in_key) {
return this.items[in_key];
}
this.setItem = function(in_key, in_value)
{
if (typeof(in_value) != 'undefined') {
if (typeof(this.items[in_key]) == 'undefined') {
this.length++;
}
this.items[in_key] = in_value;
}
return in_value;
}
this.hasItem = function(in_key)
{
return typeof(this.items[in_key]) != 'undefined';
}
}
var myHash = new Hash('one',1,'two', 2, 'three',3 );
for (var i in myHash.items) {
alert('key is: ' + i + ', value is: ' + myHash.items[i]);
}
</script>
Comment fait-on ça?
En utilisant la fonction ci-dessus, vous feriez:
var myHash = new Hash('one',[1,10,5],'two', [2], 'three',[3,30,300]);
Bien sûr, les éléments suivants fonctionneraient également:
var myHash = {}; // New object
myHash['one'] = [1,10,5];
myHash['two'] = [2];
myHash['three'] = [3, 30, 300];
puisque tous les objets en JavaScript sont des tables de hachage! Il serait cependant plus difficile de répéter, car l'utilisation de foreach(var item in object)
vous procurerait également toutes ses fonctions, etc., mais cela pourrait être suffisant selon vos besoins.
Si tout ce que vous voulez faire est de stocker des valeurs statiques dans une table de recherche, vous pouvez utiliser un Object Literal (le même format utilisé par JSON ) pour le faire de manière compacte:
var table = { one: [1,10,5], two: [2], three: [3, 30, 300] }
Et puis accédez-y en utilisant la syntaxe de tableau associatif de JavaScript:
alert(table['one']); // Will alert with [1,10,5]
alert(table['one'][1]); // Will alert with 10
Vous pouvez utiliser mon implémentation de table de hachage JavaScript, jshashtable . Il permet à n'importe quel objet d'être utilisé comme clé, pas seulement comme chaîne.
L'interpréteur Javascript stocke nativement les objets dans une table de hachage. Si vous vous inquiétez de la contamination de la chaîne prototype, vous pouvez toujours faire quelque chose comme ceci:
// Simple ECMA5 hash table
Hash = function(oSource){
for(sKey in oSource) if(Object.prototype.hasOwnProperty.call(oSource, sKey)) this[sKey] = oSource[sKey];
};
Hash.prototype = Object.create(null);
var oHash = new Hash({foo: 'bar'});
oHash.foo === 'bar'; // true
oHash['foo'] === 'bar'; // true
oHash['meow'] = 'another prop'; // true
oHash.hasOwnProperty === undefined; // true
Object.keys(oHash); // ['foo', 'meow']
oHash instanceof Hash; // true