0

我正在构建一个拼写数组,为了快速查找,我希望将每个元素的属性作为拼写,因此:

var spellings=[];
var spelling="fred";
spellings[spelling]="page 1";

对于任何拼写,这允许我通过简单的查找来检索有关它的信息:因此 spellings["fred"] 将返回字符串“page 1”。对于成千上万的拼写,这一切都非常顺利,直到有一天我的程序找到了拼写“长度”。所以它很高兴地做了:

var spelling="length";
spellings[spelling]="page 2";

于是,天地间的一切都乱了套。我收到错误“未捕获的 RangeError:无效的数组长度”。因为,当然,每个 javascript 数组都有一个属性“length”,它是一个返回数组中元素数量的数字。因此,如果我的 spellings 数组中有五个元素,则 spellings.length (或 spellings["length"]) 返回数字 5。我尝试将字符串或其他对象分配给 spellings["length"] 的尝试相应地失败了。

就我而言,有一个相当简单的解决方法,这会花费我一些信息。只需将“length”的首字母大写,因此:

var spelling="Length";
spellings[spelling]="page 2";

这有效,但不是很酷。或者,我可以重写整个过程,以便将拼写用作数组的键。有没有人有更好的解决方案?

4

0 回答 0