JS中模糊查詢功能的一些常用方法
什么是模糊查詢
模糊查詢是指可以在不明確指定查詢條件的情況下,自動(dòng)查找與指定字符串相似的內(nèi)容。例如,我們在搜索引擎中輸入關(guān)鍵字時(shí),就會(huì)出現(xiàn)相關(guān)的搜索結(jié)果,這就是利用了模糊查詢功能。
在JS中,我們可以利用一些方法來實(shí)現(xiàn)對(duì)字符串的模糊查詢。
JS字符串方法
在JS中,有一些字符串方法可以幫助我們實(shí)現(xiàn)模糊查詢功能,下面來介紹一下幾個(gè)常用的方法。
indexOf() 方法
indexOf() 方法用于定位一個(gè)字符串在另一個(gè)字符串中的位置,如果找到了,則返回該字符串的起始位置;否則,返回 -1。我們可以通過判斷indexOf()方法的返回值是否大于等于0來判斷是否找到了目標(biāo)字符串。
let str = 'hello world';
let target = 'lo';
if (str.indexOf(target) >= 0) {
console.log('找到了目標(biāo)字符串');
} else {
console.log('未找到目標(biāo)字符串');
}
match() 方法
match() 方法用于在字符串中查找與指定正則表達(dá)式相匹配的子串,并返回一個(gè)數(shù)組。我們可以通過判斷該數(shù)組的長度來判斷是否找到了目標(biāo)字符串。
let str = 'hello world';
let target = /lo/;
let result = str.match(target);
if (result && result.length > 0) {
console.log('找到了目標(biāo)字符串');
} else {
console.log('未找到目標(biāo)字符串');
}
search() 方法
search() 方法用于在字符串中查找與指定正則表達(dá)式相匹配的子串,并返回第一個(gè)匹配項(xiàng)的索引。類似于indexOf()方法,如果找到了,則返回該字符串的起始位置;否則,返回 -1。

示例說明
下面通過兩個(gè)示例來說明如何使用JS實(shí)現(xiàn)模糊查詢功能。
示例一:搜索關(guān)鍵字
在一個(gè)文本框中輸入關(guān)鍵字,點(diǎn)擊搜索按鈕后,程序?qū)⑺阉髌ヅ涞慕Y(jié)果并顯示在結(jié)果列表中。
HTML部分:
<div class="search-box"> <input type="text" id="search-input"> <button id="search-btn">搜索</button> </div> <div class="search-result"> <ul id="result-list"></ul> </div>

JS部分:
// 獲取頁面中的input框
let input = document.getElementById('search-input');
// 獲取頁面中的按鈕
let button = document.getElementById('search-btn');
// 獲取頁面中的ul
let list = document.getElementById('result-list');
// 給input框綁定oninput監(jiān)聽事件
input.addEventListener('input', function() {
// 設(shè)置一個(gè)變量為input輸入框中的值
let keyword = input.value;
// 創(chuàng)建一個(gè)有數(shù)據(jù)的數(shù)組
let data = ['apple', 'banana', 'orange', 'grape', 'watermelon'];
// 創(chuàng)建一個(gè)空數(shù)據(jù),用來存放篩選后的結(jié)果
let result = [];
// 遍歷data
data.forEach(function(item) {
// 檢查每一個(gè)keyword的值是否大于等于 0
if (item.indexOf(keyword) >= 0) {
// 如果keyword的值大于等于0,就把這個(gè)元素添加到result的數(shù)組中
result.push(item);
}
});
// 調(diào)用渲染result的函數(shù)
renderResult(result);
});
// 渲染result
function renderResult(data) {
// 聲明一個(gè)空字符串
let html = '';
// 遍歷data
data.forEach(function(item) {
// 空字符串+=li該元素
html += '<li>' + item + '</li>';
});
// ul中的內(nèi)容等于這個(gè)字符串
list.innerHTML = html;
}
示例二:實(shí)時(shí)過濾列表
在一個(gè)文本框中輸入關(guān)鍵字,程序?qū)?shí)時(shí)過濾列表中與關(guān)鍵字匹配的項(xiàng),其他項(xiàng)隱身。
HTML部分:
<div class="list-box">
<input type="text" id="filter-input">
<ul id="list">
<li>apple</li>
<li>banana</li>
<li>orange</li>
<li>grape</li>
<li>watermelon</li>
</ul>
</div>
JS部分:
// 獲取頁面中的input
let input = document.getElementById('filter-input');
// 獲取頁面中的ul
let list = document.getElementById('list');
// 給input添加input事件監(jiān)聽
input.addEventListener('input', function() {
// 轉(zhuǎn)換input大寫為小寫,并將其賦予給變量
let keyword = input.value.toLowerCase();
// 獲取list下的所有l(wèi)i標(biāo)簽
let items = list.getElementsByTagName('li');
//將items轉(zhuǎn)化為真正的數(shù)組并遍歷
Array.prototype.forEach.call(items, function(item) {
// 轉(zhuǎn)換item中文本的大小寫
let text = item.innerText.toLowerCase();
// 如果text中keyword大于等于0
if (text.indexOf(keyword) >= 0) {
// 顯示item
item.style.display = 'block';
} else {
// 否則隱藏item
item.style.display = 'none';
}
});
});以上就是關(guān)于JS中的模糊查詢功能的攻略。
總結(jié)
到此這篇關(guān)于JS中模糊查詢功能的一些常用方法的文章就介紹到這了,更多相關(guān)JS模糊查詢功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS數(shù)組方法shift()、unshift()用法實(shí)例分析
這篇文章主要介紹了JS數(shù)組方法shift()、unshift()用法,結(jié)合實(shí)例形式分析了JavaScript數(shù)組shift()與unshift()方法功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-01-01
JS/HTML5游戲常用算法之碰撞檢測 包圍盒檢測算法詳解【矩形情況】
這篇文章主要介紹了JS/HTML5游戲常用算法之碰撞檢測 包圍盒檢測算法,結(jié)合實(shí)例形式詳細(xì)分析了游戲算法中針對(duì)碰撞檢測的包盒矩形情況下的相關(guān)算法原理與操作注意事項(xiàng),需要的朋友可以參考下2018-12-12
JS面試題之如何判斷兩個(gè)數(shù)組的內(nèi)容是否相等
這篇文章主要為大家詳細(xì)介紹了JavaScript面試的??碱},即如何判斷兩個(gè)數(shù)組的內(nèi)容是否相等,文中的示例方法講解詳細(xì),需要的小伙伴可以參考一下2023-10-10
微信小程序?qū)崿F(xiàn)購物車代碼實(shí)例詳解
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)購物車代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
微信小程序?qū)崿F(xiàn)下滑到底部自動(dòng)翻頁功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)下滑到底部自動(dòng)翻頁功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
JavaScript實(shí)現(xiàn)LRU算法的示例詳解
不知道屏幕前的朋友們,有沒有和我一樣,覺得LRU算法原理很容易理解,實(shí)現(xiàn)起來卻很復(fù)雜。所以本文就為大家整理了一下實(shí)現(xiàn)的示例代碼,需要的可以參考一下2023-04-04
談?wù)勎覍?duì)JavaScript中typeof和instanceof的深入理解
這次主要說說javascript的類型判斷函數(shù)typeof和判斷構(gòu)造函數(shù)原型instanceof的用法和注意的地方,對(duì)本文感興趣的朋友一起看看吧2015-12-12
javascript多種數(shù)據(jù)類型表格排序代碼分析
這個(gè)表格排序代碼,性能比上一次那一個(gè)好了很多而且支持很多種類型的排序,這一次寫的能支持更多的排序。2010-09-09

