我需要使用JavaScript实现哈希表和哈希函数。
目标是实施学习法语的FLASHCARD计划。
目前,我希望存储的每个项目1)英语单词,2)法语单词3)法语中的短语示例4)从法语到英语的翻译。
将来可能还需要考虑图像和其他事物。
现在我对哈希表的想法如下:
var words = [['être', 'to be', 'Je suis professeur d’anglais', 'I am a English Teacher'], [, , , ], ...];
我在考虑这样的功能。
var flashcards = (function () { var words = [['être','to be','Je suis professeur d’anglais','I am a English Teacher'],[,,,]]; return function (n) { return words[n]; }; }()); alert(flashcards(0)); // 'être, ....'
请就此代码向我提出建议 最重要的是,这是一种在哈希表中查找元素的有效方法。
答案 0 :(得分:1)
首先,这与哈希表无关。它只是一个2d阵列:)没有哈希,你也不需要任何哈希。
我认为您最好为闪存卡制作一个对象,以便您可以按名称访问属性。然后只需创建一个该对象的数组:
function FlashCard(){
this.e_word = this.f_word = this.e_phrase = this.f_phrase = '';
if(arguments[0])
this.e_word = arguments[0];
if(arguments[1])
this.f_word = arguments[1];
if(arguments[2])
this.e_phrase = arguments[2];
if(arguments[3])
this.f_phrase = arguments[3];
}
var flash_cards = [
new FlashCard('to be', 'être', 'I am an English Teacher', 'Je suis un professeur d’anglais'),
new FlashCard('to have', 'avoir', 'I have three brothers', 'J\'ai trois frères'),
new FlashCard('to want', 'vouloir', 'She wants to play soccer', 'Elle veut jouer au soccer')
];
function random_card(){
return flash_cards[Math.floor(Math.random()*flash_cards.length)];
}
var card = random_card();
alert(card.e_word+': '+card.f_word);
这应该让你开始:JSFiddle