Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中字符串数组的键的关联数组_Javascript_Ajax - Fatal编程技术网

Javascript中字符串数组的键的关联数组

Javascript中字符串数组的键的关联数组,javascript,ajax,Javascript,Ajax,我试图用Javascript形成一个单词列表,每个单词都是字典中的一个键,值为true。我的程序接收一个单词并检查该单词是否为列表中的有效单词。单词列表存储在文本文件中,单词之间用新行分隔。我将这些单词扫描为一个字符串,然后拆分字符串以获得一个由所有单词组成的字符串数组。现在我无法从该数组中形成关联数组。这是我的密码: var dict={}; var words; function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) {

我试图用Javascript形成一个单词列表,每个单词都是字典中的一个键,值为true。我的程序接收一个单词并检查该单词是否为列表中的有效单词。单词列表存储在文本文件中,单词之间用新行分隔。我将这些单词扫描为一个字符串,然后拆分字符串以获得一个由所有单词组成的字符串数组。现在我无法从该数组中形成关联数组。这是我的密码:

var dict={};
var words;
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }


xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
words=xmlhttp.responseText.split("\n");
for ( var i = 0; i < words.length; i++ ) {
       dict[words[i]] = true; //This Section of Code not working
}
}
 }


xmlhttp.open("GET","twl06.txt",true);
xmlhttp.send();
}
function check(str)
{
if(dict[str])
    alert("Correct");
else
    alert("Incorrect");
}
var dict={};
变异词;
函数loadXMLDoc()
{
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
words=xmlhttp.responseText.split(“\n”);
for(var i=0;i
在对代码进行了大量调整之后,我发现,不知何故,关联数组没有形成


下面是我完整html/JS代码的链接:

除非单词[i]是整数,否则不能将其用作另一个数组的索引(JavaScript没有关联数组)


最好的解决方法是使用dict[words.indexOf(i)]/(编辑)/或其他方法将单词[i]转换为整数。

当您拆分时,我建议您拆分
\r\n
而不仅仅是
\n
留下一个
\r
尾随的
您如何知道
dict[words[i]=true“不工作”,你说的不工作是什么意思?假设
单词
确实包含单词列表,则该行看起来是正确的。你有什么错误吗?你必须提供更多的信息。做一些基本的调试,检查变量的值,等等@FelixKling:words数组是正确生成的,因为我可以使用下标符号访问各个元素。现在我的第一个词是“AA”。如果我做单词[0],我会得到“AA”。但是,如果在运行上述函数后执行dict[“AA”],我将无法定义。可能您在填充dict之前正在访问它。Ajax是异步的,因此在执行
onreadystatechange
处理程序之前,将运行
loadXMLDoc()
调用后面的代码。另一个问题可能是单词实际上有前导或尾随空格。确保使用
console.log
检查数据,而不是
alert
@FelixKling:Words没有尾随或前导空格,我检查过了。另外,如果我在loadXMLDoc函数中将dict的for循环替换为simply dict[“AA”]=true,那么函数检查对“AA”很有效,没有演示,或者实际数据不多。David Labarge
dict
的建议解决了这个问题,dict
是一个对象,
words[I]
将是一个字符串。以这种方式设置属性非常好
indexOf
是一个不存在的函数。对不起,我的错误,它应该是dict[words.idexOf(i)]。尽管可以使用字符串作为索引,但以后解析整个数组并不容易(indexOf('string')返回-1)。indexOf确实存在:同样,
dict
是一个对象而不是数组。对象没有
索引of
方法。它没有意义,因为它的属性没有顺序。在这里使用对象的全部目的是快速查找单词。当然,您永远不应该对数组使用字符串索引,但这里的情况并非如此。