Написание эффективной хэш-таблицы и хэш-функции в JavaScript для программы Flashcard - PullRequest
1 голос
/ 15 августа 2011

Мне нужно реализовать хеш-таблицу и хеш-функцию с использованием 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, ....'

Пожалуйста, дайте мне ваши предложения относительно этого кода и,прежде всего, эффективный способ поиска элементов в хеш-таблице.

1 Ответ

1 голос
/ 15 августа 2011

Прежде всего, это не имеет ничего общего с хеш-таблицей. Это просто двумерный массив :) Нет хэширования, и вам он тоже не нужен.

Я думаю, вам лучше создать объект для флэш-карты, чтобы вы могли получить доступ к свойствам по имени. Затем просто сделайте массив этого объекта:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...