SOLUTION:
此问题源于您通过AJAX请求访问文本内容而不是JSON对象。最终成为你的属性名称的词正在变成字符串(不像JSON,它们将是属性标识符)。由于您使用的是字符串名称,因此您必须使用Object.keys()
来访问这些属性名称。
以下代码演示了具有标识符属性的对象与对象之间的差异,它更像是具有字符串名称的字典以及如何访问字典与传统对象。
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引擎如何看待这两个对象的区别:
![enter image description here](https://i.stack.imgur.com/nyNeC.png)
通知你的对象属性名称是如何报价,但MyObj中的名字都没有?
为了得到你所希望看到的结果,呼吁一个JSON对象:
SpellCheck2.txt:
{
"ABCD" : "",
"ABG" : "",
"ABI" : "",
"ABO" : "",
"AC" : "",
"ACE" : "",
"ACEI" : "",
"ACER" : "",
"ACL" : "",
"ADAM" : "",
"ADHD" : "",
"ADL" : "",
"ADPKD" : "",
"ADS" : "",
"AENNS" : "",
"AFB" : "",
"AFI" : "",
"AFO" : "",
"AFP" : ""
}
指数。 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"]);
});
结果:结果[ “ABCD”]的值为:真
你在哪里使用'TEXTFILE [ 'ABCD']'?在成功callBack里面?或外面呢? Jquery.get是异步的。 –
如果我没有弄错,值[0]是整行(或字符串) - “ABCD”:“true” – Jordan
除了@RajaprabhuAravindasamy提到的,jquery.get也是一个HTTP Get调用。我假设你没有使用它从本地系统获取文件。我可能是非常错误的,但想澄清这一点。谢谢。 – Sid