用JavaScript为flashcard程序编写高效的哈希表和哈希函数

用JavaScript为flashcard程序编写高效的哈希表和哈希函数,javascript,hashtable,Javascript,Hashtable,我需要使用JavaScript实现一个哈希表和哈希函数 目标是实施学习法语的抽认卡计划 现在,对于每个项目,我都要存储1)英语单词,2)法语单词,3)法语短语示例,4)从法语到英语的翻译 可能在将来还需要考虑图像和其他事物。 目前,我对哈希表的想法如下: var words = [['être', 'to be', 'Je suis professeur d’anglais', 'I am a English Teacher'], [, , , ], ...]; var words=['Ther

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

目标是实施学习法语的抽认卡计划

现在,对于每个项目,我都要存储1)英语单词,2)法语单词,3)法语短语示例,4)从法语到英语的翻译

可能在将来还需要考虑图像和其他事物。

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

var words = [['être', 'to be', 'Je suis professeur d’anglais', 'I am a English Teacher'], [, , , ], ...]; var words=['There','be','Je suis Professour d'anglais','I am 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, ....' var flashcards=(函数(){ var words=['tre','be','Je suis professour d'anglais','I am English Teacher',[,,,,]; 返回函数(n){ 返回单词[n]; }; }()); 警报(闪存卡(0));/'être,…' 请给我你对这个代码的建议
最重要的是,这是一种在哈希表中查找元素的有效方法。

首先,这与哈希表无关。它只是一个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);

首先,这与哈希表无关。它只是一个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);

这应该让你开始了:

使用普通javascript对象。那根本不是哈希表……使用普通javascript对象。那根本不是哈希表……我认为将FlashCard声明为对象文本要清晰得多。我认为将抽认卡声明为对象文字要清楚得多。