字符串匹配的问题

今天在写搜索功能的时候,发现在拿用户输入的内容和数据库的数据进行匹配的时候,出现了一个奇怪的现象,当用户什么也不输入的时候,居然匹配到了所有的数据,代码如下:

function LoadItem(ItemValue) {
    var html = [];
    for (i = 0; i < allHeroList.length; i++) {
        var ItemName = allHeroList[i].yxmc_b4;
        if (ItemName.indexOf(ItemValue) != "-1") {
            html.push( '<li><a href="'+allHeroList[i].jsglxqylj_90+'"><img src="'+allHeroList[i].yxtx_2b+'" width="74" height="74" alt="英雄"><em>'+allHeroList[i].yxmc_b4+'</em></a></li>');
        }
    }
    if (html.length == 0) {
        $(".role").html(" ");
        return;
    }
    $(".role").html(html.join(""));
    }

*经过调试发现,并不是代码写的有问题,而是空字符串和所有的字符串都匹配,这让我百思不得其解,为了验证,去查看了 MDN文档给出的解释如下:

"Blue Whale".indexOf("", 10);     // returns 10

经过思考,我觉得这样设计在逻辑上是很合理的,原因如下:(备注:下文中 长度为 0的字符串 和 空字符串 是同一个意思,都表示长度为0的字符串)

  • 字符与字符之间的间隔,就相当于长度为 0的字符串;
  • 因为从逻辑上来说,长度为0的字符串应该包含空字符串;既然长度为0的字符串都包含空字符串了,那么长度大于0的字符串更应该包含空字符串。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 11,018评论 0 9
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,035评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,904评论 0 4
  • 字符串匹配KMP算法详解 1. 引言 以前看过很多次KMP算法,一直觉得很有用,但都没有搞明白,一方面是网上很少有...
    张晨辉Allen阅读 7,259评论 0 3
  • 一、字符串在C#中,字符串是一系列不可修改的Unicode字符,创建字符串后,就不能修改它。要创建字符串,最常用的...
    CarlDonitz阅读 5,108评论 0 2

友情链接更多精彩内容