gpt4 book ai didi

JavaScript - 在用户生成的数组中查找对象

转载 作者:太空宇宙 更新时间:2023-11-04 15:59:20 24 4
gpt4 key购买 nike

我正在编写的脚本应该相当简单。向用户呈现两个按钮。一种将自己的输入输入到数组中。创建该数组后,它会自动排序。第二个按钮允许用户搜索数组中可能存在或不存在的任何数字。这就是我的问题开始的地方。

应该发生的是,当用户输入他们想要查找的号码时。在数组中搜索该数字。如果该号码存在于该数组中,则会出现一条消息,表明已找到该号码。如果未找到该号码,则会出现一条消息说明该号码。

我觉得问题出在我的搜索函数中的 for 循环。不幸的是,我自己还没有找到解决方案。当我在代码片段提交中运行代码时,出现以下错误。

{
"message": "Uncaught TypeError: Cannot read property 'length' of undefined",
"filename": "http://stacksnippets.net/js",
"lineno": 65,
"colno": 16
}

已插入脚本的最新版本以供引用。感谢任何帮助,并提前致谢。

/* Array Function */
function arrayFunction() {
var arr = [];
for (var i = 0; i < 5; i++)
arr.push(prompt("Enter a number"));

bubbleSort(arr);
console.log(arr);

arr.toString();
window.confirm("Your sorted array is: " + arr).innerHTML = arr;
}

/* Sort Function */
function bubbleSort(arr) {
var swapped;
do {
swapped = false;
for (var i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
}

/* Search Function */
function numSearch(arr) {
var x = window.prompt("Search for a number.");
for (var i = 0; i < arr.length; i++); {
if (arr[i] == x) {
return window.confirm("It's here.");
}
}
return window.confirm("It is not here.")
}
<html>
<head>
</head>
<body>
<script language="JavaScript">
</script>
<button type="button" onclick="arrayFunction()">Create Array</button>
<button type="button" onclick="numSearch()">Search Array</button>
</body>
</html>

最佳答案

更新:有两个问题:一是您的函数中未定义arr。另一个是您的 numSearch for 循环后面直接有一个分号,导致它提前终止并且永远不会迭代您的结果。顺便说一句,我建议将字符串解析为数字并使用严格相等,如本示例所示。

此外,通过从冒泡排序切换到合并,您可以将算法的效率从 O(N^2) 降低到 O(N log N)排序。

以下代码片段有效:

/* Array Function */
let arr = [];
function arrayFunction() {
arr = [];
for (let i = 0; i < 5; i++) {
arr.push(parseInt(prompt("Enter a number")));
}

bubbleSort();
console.log(arr);

arr.toString();
window.confirm("Your sorted array is: " + arr).innerHTML = arr;
}

/* Sort Function */
function bubbleSort() {
var swapped;
do {
swapped = false;
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
}

/* Search Function */
function numSearch() {
var x = parseInt(window.prompt("Search for a number."));
for (let i = 0; i < arr.length; i++) {
if (arr[i] === x) {
return window.confirm("It's here.");
}
}
return window.confirm("It is not here.")
}
<html>
<head></head>
<body>
<button type="button" onclick="arrayFunction()">Create Array</button>
<button type="button" onclick="numSearch()">Search Array</button>
</body>
</html>

关于JavaScript - 在用户生成的数组中查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404920/

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