JavaScript对象中的线性搜索
Linear Searching in a JavaScript Object
我正试图创建一堆JS对象,并将它们全部放入一个数组中,以便能够线性搜索每个对象中包含的值。
我很确定这个问题是在搜索传入的值时出现在嵌套的for循环中。我研究了.contains()方法,只使用了简单的比较运算符==和===,但它们都不适用。所以我的问题是,当我在文本框中键入"times square"时,目前,我只想弹出警报框,并在POI数组中显示包含该目的地的对象的名称。
我下面的HTML只是一个简单的文本框和一个提交按钮。有什么帮助吗?
// scripts
var bmtBroadWayLine = {
color: 'yellow',
poi: ["times square", 'south ferry'],
letters: 'N Q R',
name: "BMT Broadway Line",
};
var destinations = [];
destinations[1] = bmtBroadWayLine;
function findDestination() {
for (var i = 0; i < destinations.length; i++) {
for (var j = 0; j < destinations[i].poi.length; j++) {
if (destinations[i].poi[j] == document.getElementById("dest-entry")) {
alert(destinations[i].poi[j].name);
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Routes</title>
</head>
<body>
<h1>Where Do You Want To Go?</h1>
<input type="text" id="dest-entry">
<input type="button" value="Send" onclick="findDestination()">
<div id="output"></div>
<script src="scripts.js"></script>
</body>
</html>
这个脚本有很多错误:
- 您正在比较字符串和DOM对象
- 您正试图访问字符串的
name
属性 - 您正在使用基于零的索引语言中的基于1的索引
没有错误,但仍然:
- 您没有验证null
- 您在每次迭代中都要查找一个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);
}
可能还想检查此document.getElementById("dest-entry")
的NULL
此外,您正在访问string
的name
属性
alert(destinations[i].poi[j].name);
你可能只是想要这个:
alert(destinations[i].name);
还有:
destinations[1] = bmtBroadWayLine;
只需进行
destinations.push(bmtBroadWayLine);
添加索引不是第一个可用的项时,长度会增加1以上。所以现在有了1个元素,长度是2,第一个元素是未定义的,您正试图访问undefined
的属性。
相关文章:
- 以有效的方式搜索对象列表 mongo
- findAndModify,如何对文档进行操作's数组搜索对象并更改字段值
- Lodash搜索对象属性并修改值
- 如何使用糖.js来搜索对象中的数组
- JavaScript对象中的线性搜索
- Javascript使用.indexof搜索对象并创建一个表
- 搜索对象数组中的元素
- 如何在数组中搜索对象属性
- 在Javascript中搜索对象
- 基于NodeJS中的其他数组过滤/搜索对象的JavaScript数组
- 自定义mongodb搜索对象
- 根据属性名称递归搜索对象中的值
- 使用香草JavaScript搜索对象数组
- 如何做一个深度搜索对象从一个给定的字符串
- 在客户端搜索对象
- 在Javascript中搜索对象数组
- 如何用输入数组搜索对象
- Javascript -按键搜索对象
- 快速搜索对象数组以查找匹配的键/值对
- 在JavaScript中递归搜索对象