我有多個選擇設置爲篩選器以過濾(隱藏/顯示)頁面特定部分內的DOM元素。這些部分都設置了這樣(簡化):將多維數組鍵/值與多個數據屬性/值進行動態比較
<section id="people">
<div data-filtervals="{"titleLevel":["2"],"titleFunction":["4","13"]}">John Doe</div>
.
.
.
<div data-filtervals="{"titleLevel":["1"],"titleFunction":["2","3","10"]}">Sally Smith</div>
</section>
我的過濾器產生一個這樣的數組中的console.log(過濾器):
titleFunction: Array[2]
0: "1"
1: "2"
length: 2
titleLevel: Array[3]
0: "1"
1: "2"
2: "3"
length: 3
我想寫這將迭代函數如果數據key
(s)不在過濾器[key]值中,則隱藏div。
因此在上面的示例中,John Doe將被隱藏,因爲他的data-titleLevel和data-titleFunction未包含在過濾器數組中。數據屬性值中存在重疊,因此將它們組合成單個數組是不可能的,並且遺留代碼阻止了我暫時改變它。
我的挑戰是創建一個Javascript(或jQuery)函數,該函數可以動態地將一個或多個過濾器與數據屬性與匹配鍵進行比較。我已經能夠讓過濾器爲/或者而不是動態地過濾多個過濾器,除非我硬編碼它。
我看着.some()
,但仍然用邏輯和其他SO「陣列陣列」解決方案打牆like this和this,但我發現他們似乎並沒有完全解決這個問題。
編輯: 我已決定的數據屬性與值爲JSON與符合過濾條件的鍵的鍵的單個數據屬性組合;也許這會使比較更容易。在我工作時仍然在尋找解決方案。
你能分享一個數組的樣本(2d)和它應該處理的標記來隱藏和顯示基於這個2d數組的值嗎? – gurvinder372