为抽认卡程序编写高效的哈希表和哈希函数

Writing efficient hash table and hash function in JavaScript for flashcard program

本文关键字:哈希表 哈希 函数 高效 程序      更新时间:2023-09-26

我需要使用JavaScript实现一个哈希表和哈希函数。

目标是实现一个学习法语的FLASHCARD程序。

现在,我想为每一项存储1)英语单词,2)法语单词,3)法语短语示例,4)法语到英语的翻译。

将来可能还需要考虑图像和其他东西。

目前我对哈希表的想法如下:

<>之前var words = [['être', 'to be', 'Je suis professor d ' anglais', '我是英语老师'],[,,,],…];之前

我在想一个这样的函数。

<>之前Var flashcards = (function () {var words = [['être','to be','Je suis professor d ' anglais','我是英语老师'],[…]];返回函数(n) {返回单词[n];};} ());警报(抽认卡(0));//'être, ....'之前

请给我你对这个代码的建议最重要的是,一个有效的方法来查找哈希表中的元素。

首先,这与哈希表无关。它只是一个二维数组:)这里没有哈希,你也不需要任何哈希。

我认为你最好为闪存卡创建一个对象,这样你就可以通过名称访问属性。然后创建一个对象数组:

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