我正在尝试创建一个教人语言的系统。用户将使用目标语言键入给定的句子,并检查他们是否正确键入了它。
我想给他们一个单词库,用于他们给出的当前任务(也就是句子)。
单词bank中的单词应与当前任务相关联。在图像中,绿色框中的单词是句子1的一部分,红色是句子2的一部分。
为此,我将任务放在一个对象中。键是任务名称,值是句子。
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对象的键匹配给定的任务?
很抱歉,如果这令人困惑。
谢谢!