Как остановить функцию фильтра JavaScript ранее для оптимизации - PullRequest
0 голосов
/ 18 февраля 2019
const filtered = array_of_things.filter(thing => {

  const isCar = thing.item === 'car'
  const colorIsRed = thing.color === 'red'
  const isSUV = thing.type === 'SUV'
  const priceIsHigh = thing.price >= 100
  const widthIsTen = thing.width === 10

  return isCar && colorIsRed && isSUV && priceIsHigh && widthIsTen 
})

Так что в моем примере кода, код продолжает выполняться, даже если первое сравнение ложно.Как мне сделать так, чтобы он заканчивался при первом ложном и не делал остальных сравнений?

Также это лучше, чем вызывать фильтр при каждом сравнении?Наличие нескольких фильтров, таких как:

  const filter_SUV = array_of_things.filter(thing => thing.type === 'SUV')
  const filter_red = filter_SUV.filter(thing => thing.color === 'red')

1 Ответ

0 голосов
/ 18 февраля 2019

Не создавайте отдельные переменные, просто возвращайте каждое условие && d с каждым другим условием:

const filtered = array_of_things.filter(({ item, color, type, price, width }) => (
  item === 'car' &&
  color === 'red' &&
  type === 'SUV' &&
  price >= 100 &&
  width === 10
));

Да, этот тип шаблона немного более эффективен, чем многократный вызов .filter,потому что один .filter означает, что массив повторяется только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...