JavaScript对象中的线性搜索

JavaScript对象中的线性搜索,javascript,html,Javascript,Html,我试图创建一组JS对象,并将它们全部放入一个数组中,以便能够线性搜索每个对象中包含的值 我相当肯定,在搜索传入的值时,嵌套for循环中出现了问题。我研究了.contains()方法,只使用了简单的比较运算符==和===,但它们都不适用于我。因此,我的问题是,当我在文本框“times square”中键入时,目前我只希望弹出警报框,并在其POI数组中显示包含该目标的对象的名称 下面我的HTML只是一个简单的文本框和一个提交按钮。有什么帮助吗 //脚本 变量bmtBroadWayLine={ 颜色

我试图创建一组JS对象,并将它们全部放入一个数组中,以便能够线性搜索每个对象中包含的值

我相当肯定,在搜索传入的值时,嵌套for循环中出现了问题。我研究了.contains()方法,只使用了简单的比较运算符==和===,但它们都不适用于我。因此,我的问题是,当我在文本框“times square”中键入时,目前我只希望弹出警报框,并在其POI数组中显示包含该目标的对象的名称

下面我的HTML只是一个简单的文本框和一个提交按钮。有什么帮助吗

//脚本
变量bmtBroadWayLine={
颜色:'黄色',
poi:[“时代广场”,“南渡轮”],
字母:“N Q R”,
名称:“BMT百老汇线”,
};
var目的地=[];
目的地[1]=bmtBroadWayLine;
函数findDestination(){
对于(变量i=0;i

路线
你想去哪里?

此脚本存在许多问题:

  • 您正在将字符串与DOM对象进行比较
  • 您正在尝试访问字符串的
    name
    属性
  • 您正在零基索引语言中使用基于1的索引
不是错误,但仍然:

  • 您没有验证空值
  • 每次迭代都要查找一个DOM项,这很慢
您正在将字符串与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);