我已将键值对添加到字典中,如下所示
var TextFile = {};
jQuery.get('SpellCheck.txt', function (data) {
var Values = data.split('\n');
for (var i = 0; i < 50; i++) {
var val = Values[i];
TextFile[val] = 'true';
}
});
Textfile具有以下值
但Textfile['ABCD']
以未定义的方式返回
答案 0 :(得分:0)
<强> SOLUTION:强>
问题源于您通过AJAX请求而不是JSON对象访问文本内容这一事实。最终成为您的属性名称的单词将变为字符串(与JSON不同,它们将成为属性标识符)。由于您使用的是String名称,因此必须使用Object.keys()
来访问这些属性名称。
以下代码演示了具有标识符属性的对象与您的对象之间的区别,它更像是具有String名称的字典以及如何访问字典与传统对象。
<强> SpellCheck.txt:强>
ABCD
ABG
ABI
ABO
AC
ACE
ACEI
ACER
ACL
ADAM
ADHD
ADL
ADPKD
ADS
AENNS
AFB
AFI
AFO
AFP
您的代码:
var TextFile = {};
jQuery.get('SpellCheck.txt', function (data) {
var values = data.split('\n');
for (var i = 0; i < values.length; i++) {
var val = values[i];
TextFile[val] = 'true';
}
});
我的测试(放在上面的AJAX成功回调中):
// Test of traditional JS object with properties that are not strings:
var myObj = { prop1: 1, prop2: 2 }
console.log(myObj);
// Test of your dictionary object and how you must use Object.keys()
// to access dictionary elements:
console.log(TextFile);
console.log("Name of first key in dictionary is: " + Object.keys(TextFile)[0]);
console.log("Value of first key in dictionary is: " + TextFile[Object.keys(TextFile)[0]]);
您可以在控制台中看到JS引擎如何看待这两个对象的区别:
请注意您的对象属性名称是如何引用的,但myObj名称不是<?em>
要获得您希望的结果,请调用JSON对象:
<强> SpellCheck2.txt 强>:
{
"ABCD" : "",
"ABG" : "",
"ABI" : "",
"ABO" : "",
"AC" : "",
"ACE" : "",
"ACEI" : "",
"ACER" : "",
"ACL" : "",
"ADAM" : "",
"ADHD" : "",
"ADL" : "",
"ADPKD" : "",
"ADS" : "",
"AENNS" : "",
"AFB" : "",
"AFI" : "",
"AFO" : "",
"AFP" : ""
}
<强>的index.html:强>
var result = "";
jQuery.get('SpellCheck2.txt', function (data) {
result = JSON.parse(data);
for (var prop in result) {
result[prop] = 'true';
}
console.log("Value of result[\"ABCD\"] is: " + result["ABCD"]);
});
结果:结果的值[&#34; ABCD&#34;]为:true