犯罪嫌疑人X
2021-03-29 17:15:37
我正在尋找一種生成布爾值的優(yōu)雅方法,該布爾值最終將在過濾器方法的回調(diào)函數(shù)內(nèi)使用&&運算符加入。我試圖遍歷過濾條件,但是找不到將每個迭代結(jié)果合并為以下格式的方法:return Boolean && Boolean && Boolean && Boolean && Boolean因為+ = &&布爾無效。這是我所擁有的并且正在起作用://data I am filteringthis.preSearch = [ ["The Lord of the Rings", "J. R. R. Tolkien", "English", "1955", "150 milionów"], ["Le Petit Prince (The Little Prince)", "Antoine de Saint-Exupéry", "French", "1943", "140 milionów"], ["Harry Potter and the Philosopher's Stone", "J. K. Rowling", "English", "1997", "120 milionów"], ["The Hobbit", "J. R. R. Tolkien", "English", "1937", "100 milionów"], ["And Then There Were None", "Agatha Christie", "English", "1939", "100 milionów"], ["Dream of the Red Chamber", "Cao Xueqin", "Chinese", "1791", "100 milionów"]]//filters, that are set dynamically but let's pretend they are equal tovar filters = ["", "", "english", "19", "1"]var searchdata = this.preSearch.filter(row => { return row[0].toLowerCase().indexOf(filters[0].toLowerCase()) > -1 && row[1].toLowerCase().indexOf(filters[1].toLowerCase()) > -1 && row[2].toLowerCase().indexOf(filters[2].toLowerCase()) > -1 && row[3].toLowerCase().indexOf(filters[3].toLowerCase()) > -1 && row[4].toLowerCase().indexOf(filters[4].toLowerCase()) > -1})我需要可擴展且更優(yōu)雅的解決方案,因此,如果我增強了過濾后的數(shù)組,則無需添加&&。
2 回答

小怪獸愛吃肉
TA貢獻1852條經(jīng)驗 獲得超1個贊
您可以通過應(yīng)用Array.every()并String.includes()像這樣來做到這一點:
var searchdata = this.preSearch.filter(row => {
// this only returns true if our condition works for
// index = 0, 1, 2, 3, 4
return [0, 1, 2, 3, 4].every(index => {
const rowContent = row[index].toLowerCase();
const filterContent = filters[index].toLowerCase();
// String.includes() is nicer than String.indexOf() here because
// you don't need the ugly -1
return rowContent.includes(filterContent);
});
});
添加回答
舉報
0/150
提交
取消