Реализовать поисковый фильтр для многомерного массива

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

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

var data= [[1, "ТЕСТ", "0", "110"], ["2", "строка2", "0", "111"],[3, "Тест1", "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, "TEST", "0", "110"],[3, "Test1", "0", "113"]]

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


person Preeti    schedule 05.05.2020    source источник
comment
Каков критерий наполнителя?   -  person Ashish Ranjan    schedule 05.05.2020
comment
Использовать шаблон и сопоставление   -  person brijesh    schedule 05.05.2020
comment
@brijesh Я почти уверен, что Pattern и Matcher существуют только в Java, тег Java здесь был неправильно размещен   -  person user    schedule 05.05.2020


Ответы (1)


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

вместо === вы можете использовать include

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