[英]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);
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.