欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中如何對嵌套數(shù)組進(jìn)行filter過濾

 更新時間:2023年06月29日 15:37:28   作者:xjc233  
這篇文章主要介紹了js中如何對嵌套數(shù)組進(jìn)行filter過濾問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

js對嵌套數(shù)組進(jìn)行filter過濾

最近碰到一個需求,對嵌套數(shù)組進(jìn)行filter過濾,但是搜遍了CSDN,沒有找到合適的答案,最后也是解決了,記錄一下解決方法

由于返回的數(shù)據(jù)類型太復(fù)雜,這里只做一個小的樣例

listData = [
? {
? ? name: 'zhangsan'
? ? data: [A,B,C]
? },
? {
? ? name: 'lisi'
? ? data: [D,E,F]
? }
]

要求便是在data數(shù)組中進(jìn)行篩選,篩選出對應(yīng)的name,filter只能對第一層進(jìn)行篩選,當(dāng)時想到的是使用兩層filter,但是沒有用,最后經(jīng)過多次實驗,最后發(fā)現(xiàn)filter+find可以使用,看一下代碼部分

const filterRepositoryList = () => {
? if (
? ? !slectedInfo.sigSelected &&
? ? !slectedInfo.repositiorySelected &&
? ? !slectedInfo.maintainerSelected
? ) {
? ? repoRenderList.value = repositioryList.value.slice(0, 99);
? ? getSigList(initialParams);
? } else {
? ? SigList.value = _.filter(allList.value, (item: any) => {
? ? ? return (
? ? ? ? (!slectedInfo.sigSelected ||
? ? ? ? ? item.sig_name === slectedInfo.sigSelected) &&
? ? ? ? (!slectedInfo.repositiorySelected ||
? ? ? ? ? item.repos.find((subItem: string) => {
? ? ? ? ? ? return subItem === slectedInfo.repositiorySelected;
? ? ? ? ? })) &&
? ? ? ? (!slectedInfo.maintainerSelected ||
? ? ? ? ? item.maintainers.find((subItem: string) => {
? ? ? ? ? ? return subItem === slectedInfo.maintainerSelected;
? ? ? ? ? }))
? ? ? );
? ? });
? ? paginationData.value.total = SigList.value.length;
? }
};

這個代碼比較全了,包含了篩選的全部邏輯,因為當(dāng)時刪選的表格下面還有一個分頁條,所以進(jìn)行了判空,為空就展示全部數(shù)據(jù),加一個分片,不為空,就篩選,看一下代碼的主要部分

// 安裝了lodash,所以用了lodash的篩選
SigList.value = _.filter(allList.value, (item: any) => {?
? return (
? ? (!slectedInfo.sigSelected ||
? ? ?item.sig_name === slectedInfo.sigSelected) &&
? ? ?// 雙層篩選主要代碼,在data數(shù)組中進(jìn)行find
? ? ?(!slectedInfo.repositiorySelected ||
? ? ?item.repos.find((subItem: string) => {
? ? ? ?return subItem === slectedInfo.repositiorySelected;
? ? ?})) &&
? ? ?(!slectedInfo.maintainerSelected ||
? ? ?item.maintainers.find((subItem: string) => {
? ? ? ? return subItem === slectedInfo.maintainerSelected;
? ? ? }))
? ? );
});

這樣就實現(xiàn)了一個雙層的過濾。

js多層數(shù)組的Filter過濾

    // 搜索框過濾
  function searchFilter(list, key, num, prevList) {
        for (let i = list.length - 1; i >= 0; i--) {
            let item = list[i]
            if (item.children && Array.isArray(item.children) && item.children.length > 0) {
                searchFilter(item.children, key, i, list);
            } else {
                if (item.title && !item.title.includes(key)) {
                  list.splice(i, 1)
                }
            }
        }
        if (Array.isArray(list) && list.length == 0) {
          if(prevList && num){
            prevList.splice(num, 1)
          }
        }
    }
//調(diào)用
searchFilter(list,key)

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Three.js 再探 - 寫一個微信跳一跳極簡版游戲

    Three.js 再探 - 寫一個微信跳一跳極簡版游戲

    最近項目結(jié)束,很空閑,于是就試著仿照微信跳一跳寫了一個極簡版的游戲,到底簡單到什么程度呢?大家可以參考下本文
    2018-01-01
  • 原生JS實現(xiàn)的雙色球功能示例

    原生JS實現(xiàn)的雙色球功能示例

    這篇文章主要介紹了原生JS實現(xiàn)的雙色球功能,涉及javascript隨機(jī)數(shù)生成及數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 網(wǎng)頁圖片延時加載的js代碼

    網(wǎng)頁圖片延時加載的js代碼

    大家如果使用firebug去查看的話就會發(fā)現(xiàn),當(dāng)你滾動到相應(yīng)的行時,當(dāng)前行的圖片才即時加載的,這樣子的話頁面在打開只加可視區(qū)域的圖片,而其它隱藏的圖片則不加載,一定程序上加快了頁面加載的速度,對于比較長的頁面來說,這個方案是比較好的。
    2010-04-04
  • js父頁面與子頁面不同時顯示的方法

    js父頁面與子頁面不同時顯示的方法

    這篇文章主要介紹了js父頁面與子頁面不同時顯示的方法,打開一個頁面后,父頁面DISABLE,在子頁面關(guān)閉后,父頁面ENABLE,是比較實用的技巧,需要的朋友可以參考下
    2014-10-10
  • 封裝html的select標(biāo)簽的js操作實例

    封裝html的select標(biāo)簽的js操作實例

    本文將為大家介紹下正如標(biāo)題所示的select操作:清空所有的選項、添加一個選項、根據(jù)值、選中一個選項、根據(jù)下標(biāo),選中一個選項,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07
  • JS實現(xiàn)仿Windows經(jīng)典風(fēng)格的選項卡Tab切換代碼

    JS實現(xiàn)仿Windows經(jīng)典風(fēng)格的選項卡Tab切換代碼

    這篇文章主要介紹了JS實現(xiàn)仿Windows經(jīng)典風(fēng)格的選項卡Tab切換代碼,涉及JavaScript元素的遍歷與樣式的修改技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • js實現(xiàn)簡單五子棋游戲

    js實現(xiàn)簡單五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簡單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • layui監(jiān)聽下拉選框選中值變化的方法(包含監(jiān)聽普通下拉選框)

    layui監(jiān)聽下拉選框選中值變化的方法(包含監(jiān)聽普通下拉選框)

    今天小編大家分享一篇layui監(jiān)聽下拉選框選中值變化的方法(包含監(jiān)聽普通下拉選框),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 詳解Python中l(wèi)ogging日志模塊在多進(jìn)程環(huán)境下的使用

    詳解Python中l(wèi)ogging日志模塊在多進(jìn)程環(huán)境下的使用

    許多應(yīng)用程序中都會有日志模塊,用于記錄系統(tǒng)在運(yùn)行過程中的一些關(guān)鍵信息,以便于對系統(tǒng)的運(yùn)行狀況進(jìn)行跟蹤。這篇文章給大家主要介紹了在Python中l(wèi)ogging日志模塊在多進(jìn)程環(huán)境下的使用,需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • js實現(xiàn)的星星評分功能函數(shù)

    js實現(xiàn)的星星評分功能函數(shù)

    這篇文章主要介紹了js實現(xiàn)的星星評分功能函數(shù),涉及JavaScript響應(yīng)鼠標(biāo)事件實現(xiàn)針對頁面元素的遍歷與樣式屬性的修改技巧,非常簡單實用的代碼,需要的朋友可以參考下
    2015-12-12

最新評論