jQuery-在数组中搜索类似的元素
jQuery - Search for similar elements in array
我正试图在数组中搜索类似的元素。例如,如果在我的数组中我有像Sarah, sara, sarah
这样的name元素,并且在输入字段中我键入并搜索sara
,那么结果应该会给我所有类似的结果。
然而,这是fiddle,它只是寻找正确的元素,并且不区分大小写。
如何做到这一点,以便进行不区分大小写的搜索和sql搜索LIKE %...%
;
到目前为止,我有
$("#SearchBtn").click(function() {
var searchInput = $("#SearchInput").val();
if (searchInput == "") {
alert("Search field is empty");
} else {
for (var i = 0; i < array.length; i++) {
if ((array[i][0] == searchInput) || (array[i][1] == searchInput) || (array[i][2] == searchInput) || (array[i][3] == searchInput) || (array[i][4] == searchInput)) {
alert(array[i]);
}
}
}
});
对于不区分大小写的部分,您可以在输入字符串和搜索字符串上使用toLowerCase。
之后,您可以使用indexOf来查找输入字符串是否与您的搜索模式"相似"。
然而,字符串之间的相似性可能会稍微复杂一些。例如,你可以认为"sora"类似于"sara",而"sarasara"不是。。。
在这种情况下,您需要汉明距离或类似的距离函数和相似性阈值。
此外,toLowerCase在全球化方面可能不起作用,您必须考虑toLocalLowerCase。
看看这个小提琴中的简单版本:
var array = [
["Andrew", "London", "Male", "waiter", "single"],
["John", "rome", "Male", "designer", "Married"],
["Sarah", "new York", "Female", "broker", "single"],
["Annah", "UK", "Female", "waiter", "maRRied"],
["sara", "Tokio", "Female", "Waiter", "single"],
["John", "Naples", "male", "Chef", "married"]
];
//Search Box
$("#SearchBtn").click(function() {
var searchInput = $("#SearchInput").val().toLowerCase();
if (searchInput == "") {
alert("Search field is empty");
} else {
for (var i = 0; i < array.length; i++) {
if ((array[i][0].toLowerCase().indexOf(searchInput) >= 0)
||(array[i][1].toLowerCase().indexOf(searchInput) >= 0)
||(array[i][2].toLowerCase().indexOf(searchInput) >= 0)
||(array[i][3].toLowerCase().indexOf(searchInput) >= 0)
||(array[i][4].toLowerCase().indexOf(searchInput) >= 0)) {
alert (array[i]);
}
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="custom-search-form" class="form form-inline navbar-form ">
<div class="input-group">
<input id="SearchInput" type="text" name="mapSearch" value="" placeholder="Key Search" class="form-control">
<span class="input-group-btn">
<button id="SearchBtn" type="button" class="btn btn-info" style="height:25px;">Search</button>
</span>
</div>
在此处使用toLowerCase()
if ((array[i][0] == searchInput)
您可以在此处查看:https://jsfiddle.net/u7gkt2Lc/
var array = [
["Andrew", "London", "Male", "waiter", "single"],
["John", "rome", "Male", "designer", "Married"],
["Sarah", "new York", "Female", "broker", "single"],
["Annah", "UK", "Female", "waiter", "maRRied"],
["sara", "Tokio", "Female", "Waiter", "single"],
["John", "Naples", "male", "Chef", "married"]
];
//Search Box
$("#SearchBtn").click(function() {
var searchInput = $("#SearchInput").val();
if (searchInput == "") {
alert("Search field is empty");
} else {
for (var i = 0; i < array.length; i++) {
for(var j = 0; j <= 4 ; j++ ) {
if (array[i][j].toLowerCase().indexOf(searchInput.toLowerCase()) >= 0) {
alert (array[i][j]);
}
}
}
}
});
如上所述,您可以使用toLowerCase()函数使所有内容都小写。确保数组中的元素以及input.val()都是小写的。
完成后,您可以简单地使用indexOf函数,该函数搜索数组并返回索引。
然后我们知道,如果索引大于-1(因为0是第一个索引),那么必须存在匹配。
你可以使用类似的东西:
if(array[i][0].indexOf(searchInput) > -1) {
alert('There's a match!')
}
希望能有所帮助。
您可以使用.toLowerCase()来比较区分大小写。
var array = [
["Andrew", "London", "Male", "waiter", "single"],
["John", "rome", "Male", "designer", "Married"],
["Sarah", "new York", "Female", "broker", "single"],
["Annah", "UK", "Female", "waiter", "maRRied"],
["sara", "Tokio", "Female", "Waiter", "single"],
["John", "Naples", "male", "Chef", "married"]
];
//Search Box
$("#SearchBtn").click(function() {
var searchInput = $("#SearchInput").val();
if (searchInput == "") {
alert("Search field is empty");
}
else {
array.map(function(d) {
d.map(function(e) {
if (searchInput.toLowerCase() == e.toLowerCase()) {
alert(e);
}
})
})
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="custom-search-form" class="form form-inline navbar-form ">
<div class="input-group">
<input id="SearchInput" type="text" name="mapSearch" value="" placeholder="Key Search" class="form-control">
<span class="input-group-btn">
<button id="SearchBtn" type="button" class="btn btn-info" style="height:25px;">Search</button>
</span>
</div>
search方法执行对正则表达式和此String对象之间匹配项的搜索。使用以下不区分大小写的RegExp进行比较:
var oRegExp = new RegExp(/John/i);
var sArrayElement = "john"
sArrayElement.search(oRegExp);
相关文章:
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 在元素列表中搜索给定字符串
- jQuery-在数组中搜索类似的元素
- AJAX搜索2个元素
- jQuery递归搜索类的父元素
- 如何重置搜索表单中的特定表单元素
- 使用数据表,如何在要搜索的
中指定元素 - 自动完成搜索无法正常工作,请不要迭代$中的所有元素.每个ul-li都会及时显示响应
- Angular JS根据搜索结果和点击事件更新DOM元素
- 如何在不使用任何 html 输入/搜索元素的情况下读取本地客户端文本文件
- 在元素中搜索字符串,然后将其放入条件语句中
- 当我单击chrome的输入类型=搜索元素上的X时,是否触发了任何事件
- 如何通过搜索innerHTML的内容来获取HTML元素
- 增加在选择元素HTML中搜索的时间
- 使用DOM树中的某种节点号进行元素搜索
- 隐藏Google自定义搜索元素API 2.0的搜索引擎ID
- JQuery 在渲染后搜索 dom 元素,并用其相应的值替换键
- 如何获得下一个兄弟的值,如果元素搜索特定的字符串
- 如何在鼠标悬停时将焦点设置为输入元素(搜索框)
- 我怎样才能得到这个link元素?总是显示“无法找到带有链接文本的元素”==“搜索”