繁体   English   中英

JavaScript字符串搜索不起作用?

[英]Javascript string search not working?

我有一个包含一些值的数组。 我希望能够检查数组中是否存在输入字段中的值。 我的代码现在什么也不返回。

HTML

<input type="text" id="str_search" value=" "/>
<input type="button" id="search_str" value="search" />

Java脚本

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val();
        // alert(find(array,src_keyword));
        find(array, src_keyword)
    });
});

function find(arr, src_keyword1) {
    var result = [];
    alert(src_keyword1);
    // src_keyword1="oo";
    for (var i in arr) {
        var search = new RegExp(src_keyword1, "gi");
        if (arr[i].match(search)) {
            alert(arr[i])
            result.push(arr[i]);
        }
    }
    return result;
}

提前致谢

叉:-http: //jsfiddle.net/jfy8J/

您的代码无法正常工作的原因可能是因为文本框值中有一个空格 ,并且您没有对其进行修整。

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
        var res = $.grep(array,function(obj,_){
            return obj === src_keyword;
        });
       if(res.length == 0) alert('not found'); else alert('found');
    });
});

更新获取未找到的值: -http : //jsfiddle.net/ELqZS/

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
       var items = $.grep(array,function(obj,_){
            return obj !== src_keyword;
        });
    alert(items);
    });
});

更新2从具有搜索文本http://jsfiddle.net/8FJYS/的数组中返回项目

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
      var items =  array.filter(function(o, _){
            return o.indexOf(src_keyword) > -1;
        });
    alert(items);
    });
});

从更改您的for循环

for (var i in arr)

for (var i=0; i < arr.length; i++)

前一个循环遍历对象的所有属性以及每个索引元素的值。 例如

var a = [7,8,9,0];
a.blah = "aoeusnth";
for (var prop in a) {
    console.log(prop);
}

将记录

7
8
9
0
"blah"

到控制台。

您正在使用变量“ i”来访问数组的值,但是在您的代码中“ i”已经是值。 您要使用项目的索引才能访问该项目。

只需使用.indexOf()

$("#search_str").click(function () {
  src_keyword = $("#str_search").val().trim();
  alert(array.indexOf(src_keyword) !== -1);
});

颠倒测试过程。 现在,您将测试search字符串的result字符串。 您想扭转这种情况。

使用regexp test()方法。 所以...

var search = new RegExp(src_keyword1, "gi");
if(search.test(arr[i])){....}

当然,您现在可以将RegExp构造函数带出循环,以及其他一些小的更改。

我认为您想使用Array.indexOf而不是正则表达式解决方案。

摘要

返回可以在数组中找到给定元素的第一个索引;如果不存在,则返回-1。

<input type="text" id="str_search" value=" " />
<input type="button" id="search_str" value="search" />

var array = ["php", "jquery", "java"];
var src_keyword = "";
$(document).ready(function () {
    $("#search_str").click(function () {
        src_keyword = $("#str_search").val().trim();
        alert(array.indexOf(src_keyword) !== -1);
    });
});

jsfiddle上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM