JavaScript: фильтрация массива с помощью цикла for / foreach - PullRequest
0 голосов
/ 11 октября 2019

Итак, я хотел отфильтровать таблицу данных на основе значений любого из ее столбцов.

Я попытался пройтись по клавишам моих объектов и пройти по ним, чтобы сравнить значенияобъект [ключ] и посмотреть, если он включает в себя значение, которое я печатаю на входе фильтра. Это то, что я попробовал

const val = event.target.value.toLowerCase();
const keys = bject.getOwnPropertyNames(myObject).slice(1,9);

const temp = this.temp.filter(function(d) {
      keys.forEach(key => {
        console.log(`Comp : ${d[key].toString().toLowerCase().indexOf(val) !== -1 || !val}`)
        return (d[key].toString().toLowerCase().indexOf(val) !== -1 || !val)
      });

    }

Теперь я знаю, что этот код не работает, пока работает этот код:

const val = event.target.value.toLowerCase();
const keys = bject.getOwnPropertyNames(myObject).slice(1,9);

const temp = this.temp.filter(function(d) {
      for (let i=0; i<keys.length; i++){
        if (d[keys[i]].toString().toLowerCase().indexOf(val) !== -1 || !val){
          return true;
        }
      };
    }

Я знаю, что в этом случае лучше использовать цикл forтак как он имеет немного лучшую производительность, так как не требует вызова функции, скомпилированного цикла forEach, но я не понимаю, почему мой цикл forEach возвращает пустой массив. Может быть, это что-то делать с асинхронным аспектом функции обратного вызова в цикле forEach, но мне нужны пояснения по этому вопросу.
Заранее спасибо

...