From f748b56e3beb1f62be33cf005d745c025d0fc192 Mon Sep 17 00:00:00 2001 From: ZiuChen <457353192@qq.com> Date: Thu, 8 Sep 2022 18:08:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=A3=80?= =?UTF-8?q?=E7=B4=A2=E6=97=B6=E5=B1=95=E7=A4=BA=E4=BA=86=E6=9C=AA=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Main.vue | 47 +++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/views/Main.vue b/src/views/Main.vue index b5c72c1..f6048d4 100644 --- a/src/views/Main.vue +++ b/src/views/Main.vue @@ -37,6 +37,27 @@ const filterText = ref('') // 搜索框绑定值 const list = ref([]) // 全部数据 const showList = ref([]) // 展示的数据 +const textFilterCallBack = (item) => { + // filterText & item + if (filterText.value.trim()) { + if (filterText.value.trim().indexOf(' ') !== -1) { + // 有过滤词 有空格 + const hitArray = [] + for (const f of filterText.value.trim().split(' ')) { + hitArray.push(item.data.toLowerCase().indexOf(f.toLowerCase()) !== -1) + } + // 只返回全命中的 只要存在 false即不返回 + return hitArray.indexOf(false) === -1 + } else { + // 有过滤词 无空格 不区分大小写检索 + return item.data.toLowerCase().indexOf(filterText.value.trim().toLowerCase()) !== -1 + } + } else { + // 无过滤词 返回全部 + return true + } +} + const updateShowList = (type) => { // 更新显示列表 showList.value = list.value @@ -44,25 +65,7 @@ const updateShowList = (type) => { type === 'collect' ? item.collect === true : type === 'all' ? item : item.type === type ) // 是 collect则返回所有收藏 否则按照 type返回 .filter((item) => (filterText.value ? item.type !== 'image' : item)) // 有过滤词 排除掉图片 DataURL - .filter((item) => { - if (filterText.value.trim()) { - if (filterText.value.trim().indexOf(' ') !== -1) { - // 有过滤词 有空格 - const hitArray = [] - for (const f of filterText.value.trim().split(' ')) { - hitArray.push(item.data.toLowerCase().indexOf(f.toLowerCase()) !== -1) - } - // 只返回全命中的 只要存在 false即不返回 - return hitArray.indexOf(false) === -1 - } else { - // 有过滤词 无空格 不区分大小写检索 - return item.data.toLowerCase().indexOf(filterText.value.trim().toLowerCase()) !== -1 - } - } else { - // 无过滤词 返回全部 - return true - } - }) + .filter((item) => textFilterCallBack(item)) .slice(0, GAP) // 重新切分懒加载列表 window.toTop() } @@ -125,9 +128,11 @@ onMounted(() => { offset.value += GAP let addition = [] if (activeTab.value !== 'all') { - addition = list.value.filter((item) => item.type === activeTab.value) - } else { addition = list.value + .filter((item) => item.type === activeTab.value) + .filter((item) => textFilterCallBack(item)) + } else { + addition = list.value.filter((item) => textFilterCallBack(item)) } addition = addition.slice(offset.value, offset.value + GAP) if (addition.length) {