如何在 Jquery 中搜索数组,如 SQL LIKE value% 语句 [重复]
Posted
技术标签:
【中文标题】如何在 Jquery 中搜索数组,如 SQL LIKE value% 语句 [重复]【英文标题】:How to search an array in Jquery like SQL LIKE value% statement [duplicate] 【发布时间】:2013-08-31 14:39:46 【问题描述】:我有一个包含一些值的数组。如何使用 jQuery 在该数组中搜索匹配或接近的值?
var a = ["foo","fool","cool","god","acl"];
如果我想搜索c
,那么它应该返回cool
,而不是acl
。
我怎样才能做到这一点?
【问题讨论】:
c
与cool
的接近程度如何,但与acl
的接近程度不同?你想让这个词以c
开头吗?
您可以使用正则表达式替换value%
使用/^value.*/
【参考方案1】:
试试这个:-
arr = jQuery.grep(a, function (value)
search = /c/gi;
if(value.match(search)) return true;
return false;
);
或
function find(arr)
var result = [];
for (var i in arr)
if (arr[i].match(/c/))
result.push(arr[i]);
return result;
window.onload = function()
console.log(find(["foo","fool","cool","god","acl"]));
;
【讨论】:
-1:jQuery?从哪里来? @Jon:jQuery 就在问题标题中。和问题主体。我已经更新了标签。 @Jon:- 更新了我的答案!!! 哦,对了。只看了标签,不好意思。 @Jon:- 没问题。 !!!!【参考方案2】:使用substring
检查数组中的每个字符串是否以您要搜索的字符串开头:
var strings = [ "foo", "cool", "acl" ];
var needle = "c";
for (var i = 0; i < strings.length; ++i)
if (strings[i].substring(0, needle.length) === needle)
alert("found: " + strings[i]);
【讨论】:
【参考方案3】:一个简单的方法是检查以“c”开头的单词并迭代数组。
var ar = ['acl','cool','cat']
for(var i = 0 ; i<ar.length ; i++)
console.log(ar[i].match(/^c/))
//Prints:
//null
//["c", index: 0, input: "cool"]
//["c", index: 0, input: "cat"]
【讨论】:
【参考方案4】:您可以使用自 javascript 1.6 起可用的过滤器方法。它会给你一个包含过滤值的数组。如果您想匹配多个项目,非常方便。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
var a = ["foo","fool","cool","god","acl"];
var startsWith = 'c';
a.filter(function (value)
return value && value.length > 0 && value[0] == startsWith;
);
// yields: ["cool"]
【讨论】:
【参考方案5】:var a = ["foo","fool","cool","god","acl"];
var Character="f";
for(i=0;i<a.length;i++)
if(a[i].indexOf(Character)!=-1)
document.write(a[i]+"<br/>");
【讨论】:
以上是关于如何在 Jquery 中搜索数组,如 SQL LIKE value% 语句 [重复]的主要内容,如果未能解决你的问题,请参考以下文章