关联对象名称

时间:2014-01-03 19:21:54

标签: javascript arrays object

我正在尝试创建一个教人语言的系统。用户将使用目标语言键入给定的句子,并检查他们是否正确键入了它。

我想给他们一个单词库,用于他们给出的当前任务(也就是句子)。

单词bank中的单词应与当前任务相关联。在图像中,绿色框中的单词是句子1的一部分,红色是句子2的一部分。

enter image description here

为此,我将任务放在一个对象中。键是任务名称,值是句子。

var tasks = {
    "task1" : "Ni Hao. Wo Shi Dan.",
    "task2" : "Xie Xie. Bu Ke Qi."
}

wordbank单词存储在一个对象中......我试图将每个wordbank集与相应的任务名称相关联。但我还需要使用键作为外语,并将值作为英语。所以我不能使用task name作为密钥......所以我无法通过密钥名称将正确的单词库与给定任务相关联。

var words = {
    "task1" :
    {
        'Ni'    : 'you',
        'Wo'    : 'I',
        'Hao'   : 'good',
        'Shi'   : 'am'  
    },
    "task2" :
    {
        'Xie Xie' : 'Thanks',
        'Bu' : 'No',
        'Ke Qi' : 'Manners'
    }
}

var phrases = {
    "task1" :
    {
        'Ni Hao'    : 'Hello',
        'Wo Shi'    : 'I am'    
    },
    "task2" :
    {
        'Xie Xie' : 'Thanks',
        'Bu Ke Qi' : 'You are welcome'
    }
}

要在用户成功输入第一句后移至下一个任务,我已按任务名称将任务名称存储在taskQueue中...

var taskQueue = [];
taskQueue.push("task1", "task2");
var i = 0;

//Match the task name from taskQueue with the correct task
function task() {
    for (key in tasks) {
        return tasks[taskQueue[i]];
    }
}

我的目标是将taskQueue中的当前任务名称与words对象中的相应键匹配...但就像我说的那样,我已经使用密钥来存储外语

function bank() {
    $(".wordBank_Words").empty();
    $(".wordBank_Hint").empty();
    for (obj in words) {
        for (key in words[obj]) {
            if (words[obj] == taskQueue[i]) {
                $(".wordBank_Words").append("<li><b>" + key + "</b>: " + words[obj][key] + "</li>");
            }
        }
    }
    for (obj in phrases) {
        for (key in phrases[obj]) { 
            $(".wordBank_Hint").append("<li><b>" + key + "</b>: " + phrases[obj][key] + "</li>");
        }
    }
}

这里,一旦用户的输入与任务键的值(句子)匹配,i就会递增以继续下一句话:

function playerResponse(input) {
    bank();
    if (input == task()) {  
        i++;
        $("#responseVerify").html("Great job");
        document.getElementById('response').value = '';
    }
    else {
        $("#responseVerify").html("Keep going...");
    }
}

那么如何通过 name 关联这些键,以便task对象和wordBank对象的键匹配给定的任务?

很抱歉,如果这令人困惑。

谢谢!

0 个答案:

没有答案