【问题标题】:Writing efficient hash table and hash function in JavaScript for flashcard program用 JavaScript 为抽认卡程序编写高效的哈希表和哈希函数
【发布时间】:2011-08-15 17:47:48
【问题描述】:

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

我们的目标是实施一个用于学习法语的 FLASHCARD 计划。

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

未来可能还需要考虑图像和其他内容。

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

var words = [['être', 'to be', 'Je suis professeur d'anglais', 'I am a English Teacher'], [, , , ], ...];

我在想这样的功能。

var 抽认卡 = (function () { var words = [['être','to be','Je suis professeur d'anglais','我是一名英语教师'],[,,,]]; 返回函数 (n) { 返回单词[n]; }; }()); 警报(抽认卡(0)); // 'être, ....'

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

【问题讨论】:

  • 使用纯 JavaScript 对象。
  • 那根本不是哈希表……

标签: javascript hashtable


【解决方案1】:

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

我认为您最好为闪存卡制作一个对象,这样您就可以按名称访问属性。然后只需创建一个该对象的数组:

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

【讨论】:

猜你喜欢
  • 2017-01-22
  • 2016-03-25
  • 2011-02-27
  • 2016-08-04
  • 2023-03-27
  • 2013-03-21
  • 1970-01-01
  • 2015-10-06
  • 2013-05-02
相关资源
最近更新 更多