javascript - 如何调试 JS 代码中的 "not found"消息?

标签 javascript

我得到了以下代码,它是一个搜索栏,使用二分搜索根据产品的 ID 来搜索产品。当我输入不存在的产品而不是打印出未找到的警报时,它不断在控制台中显示错误,即无法读取未定义的属性长度。

编辑

我只是插入html,错误在js的第8行。

info = [{id:0, title:"notebook", price:12.24}, {id:1, title:"pencil", price:2.75},
        {id:2, title:"Ruler", price:12.24}, {id:3, title:"eraser", price:12.24},
        {id:4, title:"Crayon", price:2.75}, {id:5, title:"brush", price:12.24},
        {id:6, title:"pen", price:2.75}, {id:7, title:"Sketchbook", price:12.24},
        {id:8, title:"Case", price:2.75}, {id:9, title:"Mechanical pencil", price:12.24}]

function Searching(key, info) {
    var n = info.length;
    if (n == 0) return false;
    if (n == 1) {
        if(key == info[0]["id"]) return true;
        return false;
    }
    var mid = Math.floor(n/2) - 1;
    if (key == info[mid]["id"]) {
        return true;
    }
    if (key < info[mid]["id"]) {
        Lower = info.slice(0, mid);
        return Searching(key, Lower);
    }
    if (key > info[mid]["id"]) {
        upper = info.slice[mid + 1];
        return Searching(key, upper);
    }
}

function apply() {
    var key = input.value;
    if (Searching(key, info)) {
        p1.innerHTML = "id: " + info[key]["id"] + " title: " + info[key]["title"] + " price: " + info[key]["price"];
    } else {
        p1.innerHTML = "not found";
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Welcome</h1>
    <p>Search bar</p>
    <p><input id="input" placeholder="enter "><button type="button" onclick="apply()">search</button></p>
    <p1 id="p1"></p1>  
    <script src="source.js"></script>  
</body>
</html>

最佳答案

Searching 的最后一个 if 语句中,您没有使用括号来调用切片方法:

if (key > info[mid]["id"]) {
        upper = info.slice[mid + 1];
        return Searching(key, upper);

将其更改为:

if (key > info[mid]["id"]) {
        upper = info.slice(mid + 1);
        return Searching(key, upper);

关于javascript - 如何调试 JS 代码中的 "not found"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61670007/

相关文章:

javascript - 为什么要创建 HTML 元素模式化器?

javascript - 字符串替换所有不匹配正则表达式的字符串

javascript - 为呈现的 MDBootstrap 元素覆盖 CSS

javascript - 强制刷新浏览器中的部分页面

javascript - 函数作用域外的变量

javascript - 如何将时间戳添加到 package.json 中的脚本中?

javascript - 使用可选值过滤集合

javascript - JQuery 验证插件帮助

javascript - 为什么我的下拉菜单卡住了?网页格式

javascript - Ajax 表单发布不起作用 - 似乎从未提交