gpt4 book ai didi

javascript - JavaScript 对象中的线性搜索

转载 作者:搜寻专家 更新时间:2023-10-31 22:41:24 25 4
gpt4 key购买 nike

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

我相当确定问题出在嵌套的 for 循环中,同时搜索传入的值。我正在研究 .contains() 方法,只使用简单的比较运算符 == 和 === 以及 none他们中的一些人一直在为我工作。所以我的问题是,当我在文本框“时代广场”中输入内容时,暂时我只想弹出警告框并在其 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

此外,您正在访问 stringname 属性

alert(destinations[i].poi[j].name);

你可能只想要这个:

alert(destinations[i].name);

还有:

destinations[1] = bmtBroadWayLine;

简单地做

destinations.push(bmtBroadWayLine);

当您添加一个索引不是第一个可用的项目时,长度增加超过 1。所以现在您有 1 个元素,但是长度为 2,并且第一个元素未定义,您正在尝试访问 undefined 的属性。

关于javascript - JavaScript 对象中的线性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562024/

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