我通过引用一个看起来像这样的对象来检查一个单词是否真实:
dictionary.js
var dictionary = {
"apple" : "apple",
"banana" : "banana",
"orange" : "orange"
}
在JavaScript中,由于键,检查是“即时”(我忘记了数据存储中可以实现这一点的低级现象的名称)(hash table)而不是循环遍历整个对象以找到匹配:
if (dictionary["apple"]){
//word is valid
}
但令我困扰的是每个单词都列出两次,当时从不使用每个属性键的值。属性的键(名称)是唯一检查的,值是多余的。这让我感到困扰,因为一方面,编程中的冗余看起来很糟糕,而且这个字典数组还包含超过100,000个单词,并且这个对象必须加载到页面(页面加载时间)然后存储在内存中(正在使用的RAM)作为一个对象是必要大小的两倍。
我的第一个想法是删除值:
var dictionary = {
"apple" : "",
"banana" : "",
"orange" : ""
}
但这看起来很奇怪。所以,我的问题是:
有更好的方法吗?
答案 0 :(得分:1)
你可能想试试这个:
function Dictionary()
{
this.apple =
this.banana =
this.orange = true;
}
var dictionary = new Dictionary();
console.log(dictionary.apple);
console.log(dictionary['banana']);
console.log(dictionary['not an orange'])
console.log(dictionary.notaword);
答案 1 :(得分:0)
你可以稍微瘦一点
var dictionary = {
"apple" : true,
"banana" : true,
"orange" : true
}