【发布时间】:2014-02-03 09:48:05
【问题描述】:
我正在创建一个语言学习游戏,现在我将所有词汇存储在一个 JS 对象中(作为一个概念,稍后我会将它们存储在数据库中)。
words 对象中的单词将在单词库中显示给玩家。从那里,他们可以单击一个单词以将其添加到文本框中。
当他们完成句子时,他们可以提交,这将根据预先写好的句子检查正确的词序。比如:
preWrittenSentence.push("Ni", "Hao", "Wo", "Shi");
var correctOrder = preWrittenSentence.join(' ').toLowerCase();
if ($.trim(input.toLowerCase()) == correctOrder) {
Good job...
在游戏中,如果玩家完成了一项“任务”,即他们提交了正确的句子,他们就会继续下一个任务。
最初,我通过对象中的“任务”来构造单词。这允许我只将给定任务的适当单词输出到单词库(否则,如果我没有在对象中将它们分开,它会循环遍历对象中的每个单词,即使它与给定句子):
var words = {
"task1" :
{
'Ni' : 'you',
'Wo' : 'I',
},
"task2" :
{
'Xie Xie' : 'Thanks',
'Bu' : 'No',
}
}
这样做的问题是...如果我想在另一个任务中重用一个词,例如Ni,我将不得不在该任务的对象中复制它...当我宁愿重用 @来自task1的987654327@。
所以我想也许我可以将所有单词都集中到一个对象中:
var words = {
'Ni' : 'you',
'Wo' : 'I',
'Xie Xie' : 'Thanks',
'Bu' : 'No'
}
但现在我无法控制我想在词库中显示哪些单词,如果它们都混在一起的话。
所以最后,我想也许我可以通过词性将单词放入对象中:
var words = {
"pronouns" :
{
'Ni' : 'you',
'Wo' : 'I',
},
"adjectives" :
{
'Hao' : 'good',
'Kuai' : 'fast'
}
}
这将防止单词数据库中的单词重复,但仍然不允许我将适当的词汇放入给定任务的单词库中。
所以我的问题是:有没有办法像上面那样安排它(pronouns、adjectives 等)并以有效的方式选择我想显示的单词给定任务编号的词库?
谢谢!
【问题讨论】:
-
您必须解释每个
key的字符串并运行sort函数。我们在这里谈论多少字? -
@NicholasHazel 数千。但你能解释一下你的意思吗?
-
我几乎很想将
arrays的pronouns、adjectives等设为静态adjectives等,然后通过它们进行组织,然后用它们填充你的字典。
标签: javascript jquery html object