Возвращаемое значение из цикла внутри фильтра без вспомогательной переменной - PullRequest
0 голосов
/ 26 октября 2018

У меня есть этот блок кода, но, чтобы это работало, мне нужно было создать вспомогательную переменную для хранения значения. Можно ли сделать это без этой переменной? Может быть, более функциональный подход?

    const filterSo = response => {
    return response.filter((item) => {
        let shoudlReturn = false;
        for (let key in item) {
            if (filters[lowerFirst(key)]) {
                shoudlReturn = filters[lowerFirst(key)] === item[key];
            }
        }
        return shoudlReturn;
    });
};

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Кажется, вы могли бы упростить свой код следующим образом!

const filterSo = response => 
   response.filter (item => 
      Object.keys (item)
            .map (lowerFirst)
            .some (key => filters[key] && filters[key] === item[key])
    )
0 голосов
/ 26 октября 2018

Поскольку ответ является логическим, вы можете вернуться, как только узнаете, что ответ true. Измените условие, чтобы использовать оценку короткого замыкания , чтобы проверить оба случая, и если оба являются true, немедленно вернуться.

const filterSo = response => response.filter((item) => {
  for (let key in item) {
    if (filters[lowerFirst(key)] && filters[lowerFirst(key)] === item[key]) {
      return true;
    }
  }
  return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...