JavaScript对象中的线性搜索
我试图创建一组JS对象,并将它们全部放入一个数组中,以便能够线性搜索每个对象中包含的值 我相当肯定,在搜索传入的值时,嵌套for循环中出现了问题。我研究了.contains()方法,只使用了简单的比较运算符==和===,但它们都不适用于我。因此,我的问题是,当我在文本框“times square”中键入时,目前我只希望弹出警报框,并在其POI数组中显示包含该目标的对象的名称 下面我的HTML只是一个简单的文本框和一个提交按钮。有什么帮助吗JavaScript对象中的线性搜索,javascript,html,Javascript,Html,我试图创建一组JS对象,并将它们全部放入一个数组中,以便能够线性搜索每个对象中包含的值 我相当肯定,在搜索传入的值时,嵌套for循环中出现了问题。我研究了.contains()方法,只使用了简单的比较运算符==和===,但它们都不适用于我。因此,我的问题是,当我在文本框“times square”中键入时,目前我只希望弹出警报框,并在其POI数组中显示包含该目标的对象的名称 下面我的HTML只是一个简单的文本框和一个提交按钮。有什么帮助吗 //脚本 变量bmtBroadWayLine={ 颜色
//脚本
变量bmtBroadWayLine={
颜色:'黄色',
poi:[“时代广场”,“南渡轮”],
字母:“N Q R”,
名称:“BMT百老汇线”,
};
var目的地=[];
目的地[1]=bmtBroadWayLine;
函数findDestination(){
对于(变量i=0;i
路线
你想去哪里?
此脚本存在许多问题:
- 您正在将字符串与DOM对象进行比较
- 您正在尝试访问字符串的
属性name
- 您正在零基索引语言中使用基于1的索引
- 您没有验证空值
- 每次迭代都要查找一个DOM项,这很慢
if (destinations[i].poi[j] == document.getElementById("dest-entry")) {
alert(destinations[i].poi[j].name);
}
相反,将其与DOM对象内的字符串值进行比较:
if (destinations[i].poi[j] == document.getElementById("dest-entry").value) {
alert(destinations[i].poi[j].name);
}
可能还需要检查此文档的NULL
。getElementById(“dest条目”)
此外,您正在访问字符串的名称
属性
alert(destinations[i].poi[j].name);
你可能只是想要这个:
alert(destinations[i].name);
此外:
干脆
destinations.push(bmtBroadWayLine);
添加索引不是第一个可用的项时,长度将增加1以上。现在你有了1个元素,长度是2,但是第一个元素是未定义的,你试图访问
undefined
的属性,我以前试过,但它似乎不起作用,这是我最初的想法,是什么导致了问题destinations[1]=bmtBroadWayLine代码>-为什么要使用基于1的索引。只需执行目的地。按(bmtBroadWayLine)
。添加索引不是第一个可用的项时,长度将增加1以上。现在你有1个元素,长度是2,但是第一个元素是未定义的,你试图访问undefined
的属性,这就是问题所在,哈哈。我熟悉其他语言中的数组函数,但不熟悉JS数组方法的内部工作原理。谢谢
destinations.push(bmtBroadWayLine);