vue和js中實(shí)現(xiàn)模糊查詢方式
vue和js實(shí)現(xiàn)模糊查詢
先來看效果圖

這種數(shù)據(jù)量少的場景適用于前端實(shí)現(xiàn)模糊查詢
如何實(shí)現(xiàn)?
<template>
<div class="container">
<div class="search-bar">
<el-input v-model="inputVal" placeholder="請輸入圖標(biāo)名稱" suffix-icon="el-icon-search" clearable></el-input>
</div>
<div class="icon-contain">
<div class="icon-item" v-for="item in searchList" :key="item.icon">
<i class="icon-style" :class="item.icon"></i>
<span class="icon-name">{{ item.name }}</span>
</div>
</div>
</div>
</template>
js部分
<script>
export default {
data () {
return {
inputVal: '',
list: [], // 全部圖標(biāo)列表
}
},
created() {
this.loadData()
},
computed: {
searchList () {
....
}
},
methods: {
loadData() { // 初始化數(shù)據(jù)
this.list = [
{ icon: 'el-icon-delete', name: 'el-icon-delete' },
{ icon: 'el-icon-setting', name: 'el-icon-setting' },
{ icon: 'el-icon-user', name: 'el-icon-user' },
{ icon: 'el-icon-star-off', name: 'el-icon-star-off' },
{ icon: 'el-icon-picture-outline', name: 'el-icon-picture-outline' },
{ icon: 'el-icon-s-custom', name: 'el-icon-s-custom' },
{ icon: 'el-icon-edit', name: 'el-icon-edit' },
{ icon: 'el-icon-folder-opened', name: 'el-icon-folder-opened' },
{ icon: 'el-icon-chat-dot-round', name: 'el-icon-chat-dot-round' },
{ icon: 'el-icon-upload', name: 'el-icon-upload' },
{ icon: 'el-icon-message-solid', name: 'el-icon-message-solid' }
]
},
}
}
</script>
我們用 computed 計算屬性來動態(tài)獲得圖標(biāo)列表數(shù)據(jù)
想要達(dá)到的功能是:輸入框輸入內(nèi)容,列表框能動態(tài)根據(jù)輸入值顯示輸入值相關(guān)的列表,即模糊查詢
方法1
使用 filter() 和 includes() 實(shí)現(xiàn)
computed: {
searchList () {
if (!this.inputVal) {
return this.list
}
return this.list.filter(item => {
return item.name.includes(this.inputVal)
})
return data
}
},
方法2
使用 indexOf() 實(shí)現(xiàn),(涉及到英文字母的還是建議處理一下大小寫問題)
computed: {
searchList () {
if (!this.inputVal) {
return this.list
}
const data = []
this.list.forEach(item => {
if (item.name.toLowerCase().indexOf(this.inputVal.toLowerCase()) !== -1) {
data.push(item)
}
})
return data
}
},
方法3
使用 test() 正則匹配實(shí)現(xiàn)
語法:RegExp.test(string) ,string 要檢測的字符串
該方法用于檢測一個字符串是否匹配某個模式,如果匹配返回 true ,否則返回 false
computed: {
searchList () {
if (!this.inputVal) {
return this.list
}
const data = []
const reg = new RegExp(this.inputVal.toLowerCase())
this.list.forEach(item => {
if (reg.test(item.name.toLowerCase())) {
data.push(item)
}
})
return data
}
},
還有其他的方法,如 split()、match() 等
正則表達(dá)式實(shí)現(xiàn)模糊查詢
拿到一個新需求 就是在前端進(jìn)行查詢一個數(shù)據(jù)
雖然一般這種行為都是在后端進(jìn)行但是有時候就是會給你這個需求,這里因為數(shù)據(jù)量較小所以就進(jìn)行簡單的遍歷查詢 沒有對數(shù)據(jù)進(jìn)行排序后查詢 其實(shí)有想過二分查找之類的 但是這里數(shù)據(jù)量較小 就遍歷吧
? ? search() {
? ? ? console.log(this.searchInformation)
? ? ? this.listData = []
? ? ? var str = ".*" + this.searchInformation + ".*"
? ? ? let reg = new RegExp(str)
? ? ? //這里通過邀請碼查詢
? ? ? for(var i=0;i<this.wholeListData.length;i++){
? ? ? ? if(reg.test(this.wholeListData[i].content)){
? ? ? ? ? this.listData.push(this.wholeListData[i])
? ? ? ? }
? ? ? }
? ? ? //通過附加信息查詢
? ? ? for(var i=0;i<this.wholeListData.length;i++){
? ? ? ? if(reg.test(this.wholeListData[i].addition)){
? ? ? ? ? this.listData.push(this.wholeListData[i])
? ? ? ? }
? ? ? }
? ? },以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue學(xué)習(xí)筆記進(jìn)階篇之單元素過度
這篇文章主要介紹了Vue學(xué)習(xí)筆記進(jìn)階篇之單元素過度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
使用Vue實(shí)現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù)
今天小編就為大家分享一篇使用Vue實(shí)現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
el-table?樹形數(shù)據(jù)?tree-props?多層級使用避坑
本文主要介紹了el-table?樹形數(shù)據(jù)?tree-props?多層級使用避坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
vue pages 多入口項目 + chainWebpack 全局引用縮寫說明
這篇文章主要介紹了vue pages 多入口項目 + chainWebpack 全局引用縮寫說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
vue.js中父組件調(diào)用子組件的內(nèi)部方法示例
這篇文章主要給大家介紹了關(guān)于vue.js中父組件調(diào)用子組件內(nèi)部方法的相關(guān)資料,文中給出來了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對大家的學(xué)習(xí)或者工作具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Vue自定義過濾器格式化數(shù)字三位加一逗號實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue自定義過濾器格式化數(shù)字三位加一逗號的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-03-03
vuejs使用FormData實(shí)現(xiàn)ajax上傳圖片文件
本篇文章主要介紹了vuejs使用FormData實(shí)現(xiàn)ajax上傳圖片文件,具有一定的參考價值,有興趣的可以了解一下2017-08-08

