前端實(shí)現(xiàn)列表多條件查詢/搜索功能兩種實(shí)現(xiàn)方法
前言
在前端開發(fā)中,實(shí)現(xiàn)一個(gè)多條件查詢功能是常見的需求,尤其是在處理表格數(shù)據(jù)時(shí)。下面我將通過一個(gè)簡(jiǎn)單的Vue組件示例,來展示如何實(shí)現(xiàn)一個(gè)多條件查詢功能。
組件數(shù)據(jù)結(jié)構(gòu)
首先,定義組件的數(shù)據(jù)結(jié)構(gòu),包括查詢條件和過濾后的表格數(shù)據(jù):
data() { return { // 列表搜索條件 cseAttributeData: { parcelCode: "", landType: "", isIndexesCover: "", toSellTaskState: "", manageState: "", signDownState: "", withdrawalWay: "" }, filterTableData: [], // 原始數(shù)據(jù) tableData: [] // 過濾后的數(shù)據(jù) }; }
方法一:逐個(gè)條件過濾
此方法是通過遍歷所有查詢條件,然后對(duì)每個(gè)條件應(yīng)用過濾函數(shù)。這種方法的好處是邏輯清晰,易于理解。
methods: { // 圖層屬性列表查詢按鈕 cseAttributeDataSubmit() { let arr = this.filterTableData; // 通過遍歷key值來循環(huán)處理 Object.keys(this.cseAttributeData).forEach(key => { // 調(diào)用篩選方法 arr = this.filterFunc(this.cseAttributeData[key], key, arr); }); // 為表格賦值 this.tableData = arr; }, // 篩選方法 filterFunc(val, target, filterArr) { // 參數(shù)不存在或?yàn)榭諘r(shí),返回全部數(shù)據(jù) if (!val) return filterArr; // 應(yīng)用過濾條件 return filterArr.filter(item => item[target] && item[target].indexOf(val) > -1); } }
方法二:一次性過濾所有條件
此方法是一次性過濾所有條件,這種方法可以減少遍歷次數(shù),提高效率。
methods: { // 圖層屬性列表查詢按鈕 cseAttributeDataSubmit() { this.tableData = this.filterTableData.filter(item => { // 遍歷所有查詢條件 for (const [k, v] of Object.entries(this.cseAttributeData)) { if (v) { // 如果條件不為空 if (!item[k] || !item[k].includes(v)) { return false; // 如果當(dāng)前項(xiàng)不包含查詢條件,則過濾掉 } } } return true; // 如果所有條件都滿足,則保留 }); } }
總結(jié)
兩種方法各有優(yōu)缺點(diǎn):
- 方法一邏輯清晰,易于理解,但可能效率略低。
- 方法二效率更高,但邏輯稍微復(fù)雜一些。
在選擇實(shí)現(xiàn)方法時(shí),可以根據(jù)實(shí)際項(xiàng)目需求和數(shù)據(jù)量大小來決定使用哪種方法。如果數(shù)據(jù)量不大,推薦使用方法一,因?yàn)樗子诰S護(hù)和理解。如果數(shù)據(jù)量較大,或者需要更高效的查詢,可以考慮使用方法二。
注意事項(xiàng)
- 確保查詢條件不為空時(shí)才進(jìn)行過濾。
- 根據(jù)實(shí)際數(shù)據(jù)類型,可能需要對(duì)查詢條件和數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,比如
toLowerCase()
。 - 考慮使用Vue的計(jì)算屬性(computed)來自動(dòng)更新表格數(shù)據(jù),以提高性能。
到此這篇關(guān)于前端實(shí)現(xiàn)列表多條件查詢/搜索功能兩種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)前端列表多條件查詢/搜索功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS判斷數(shù)組四種實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JS判斷數(shù)組四種實(shí)現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06一個(gè)剛完成的layout(拖動(dòng)流暢,不受iframe影響)
一個(gè)剛完成的layout(拖動(dòng)流暢,不受iframe影響)...2007-08-08unicloud云開發(fā)進(jìn)階獲取首頁列表數(shù)據(jù)示例詳解
這篇文章主要為大家介紹了unicloud云開發(fā)進(jìn)階獲取首頁列表數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法
今天小編就為大家分享一篇js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09JS實(shí)現(xiàn)動(dòng)畫兼容性的transition和transform實(shí)例分析
這篇文章主要介紹了JS實(shí)現(xiàn)動(dòng)畫兼容性的transition和transform方法,結(jié)合實(shí)例形式分析了transition和transform方法針對(duì)手機(jī)端瀏覽器兼容性問題上的相關(guān)處理技巧,需要的朋友可以參考下2016-12-12