Реализовать поисковый фильтр для многомерного массива - PullRequest
0 голосов
/ 05 мая 2020

Пытаюсь реализовать поиск в многомерном массиве.

Это мой массив

var data = [[1, «ТЕСТ», «0», «110»], [«2», «row2», «0», «111»], [3, «Test1», «0», «113»]];

Ниже приведен код:

var data= [ [1, "TEST", "0", "110"], ["2", "row2", "0", "111"],[3, "Test1", "0", "113"]];

arrayFilter(array, value) {
 return array.filter(function (object) {
    return Object.keys(object).some(function (key) {
        return object[key.toLowerCase()]===(value.toLowerCase()); 
    });
});
}
console.log(this.arrayFilter(data,test)

Эта функция возвращает [1, «ТЕСТ», «0», «110»]

Я хочу, чтобы она также возвращала частичное совпадение. т.е. он должен вернуть [[1, «ТЕСТ», «0», «110»], [3, «Тест1», «0», «113»]]

Как я могу этого добиться?

1 Ответ

0 голосов
/ 05 мая 2020

, потому что test1 не равно test;

вместо === можно использовать включает

let arrayFilterFn = (arrayToFilter, value) => {
    return arrayToFilter.filter(subArray => {
        return subArray.some(v => {
            v = v+''; // convert number to string
            return v.toLowerCase().includes(value.toLowerCase())
        })
    })
}
...