gpt4 book ai didi

Javascript,基本关联数组

转载 作者:行者123 更新时间:2023-11-30 07:22:21 25 4
gpt4 key购买 nike

我有一个简单的字符串,我将它拆分成一个数组:

var alphabet = "a,b,c,d,e";
var letters = alphabet.split(",");

var dict = [];
for ( var i = 0; i < letters.length; i++ ) {
dict[ letters[i] ] = true;
}

让我难过的是,当我做一个

console.log(dict[letters[0]] +"|"+ dict["a"]);

我明白了

//true|undefined

我不明白 letters[0] 和 "a"之间的区别。而且我绝对确定 letters[0] 和 "a"都是字符串类型。

编辑:我只是尝试将变量“dict”从方括号更改为大括号,但它仍然给我未定义。

编辑 2:下面的代码是我正在使用的代码。 “dictionary.txt”是一个文本文件,包含大约 90k 个单词,以“\n”分隔。在此文本文件中,字母“a”位于第一行。

$.get( "tiles/dictionary.txt", function( txt ) {
// Get an array of all the words
var words = txt.split( "\n" );
// And add them as properties to the dictionary lookup
// This will allow for fast lookups later
for ( var i = 0; i < words.length; i++ ) {
dict[ words[i] ] = true;
}
console.log(dict[words[0]]+"|"+dict["a"]);
});

也许我应该从这个开始,而不是尝试制作它的简化版本。

最佳答案

问题是您的文本文件有回车符。拆分换行符 ("\n") 不会删除回车,因此数组的第一个元素不是 "a" 而是 "a\r”。如果您将代码修改为以下内容,它应该可以正常工作,就像在 this fiddle 中所做的那样:

$.get("https://dl.dropboxusercontent.com/u/16966255/dictionary.txt",
function(txt) {
var words = txt.split("\r\n");
var dict = {};
for (var i = 0; i < words.length; i++) {
dict[ words[i] ] = true;
}
alert(dict[words[0]]+"|"+dict["a"]);
});

不需要文件包含回车符,您可以使用匹配是否匹配的正则表达式进行拆分:

var words = txt.split(/\r?\n/);

但是如果您计划使用更大的文件,请注意使用正则表达式进行拆分的效率明显低于使用常量字符串进行拆分的效率。

此外,虽然我已将 dict 的初始化从 [] 更改为更标准的 {},但这不是问题;数组只是一种特殊类型的对象,Javascript 中的每个对象实际上都是一个关联数组。

关于Javascript,基本关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com