如何提前停止javascript过滤器功能进行优化

时间:2019-02-18 05:01:52

标签: javascript performance

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 
})

因此,在我的示例代码中,即使第一个比较为false,该代码仍会继续执行。我该怎么做才能使它以第一个错误结束,而不进行其余的比较?

这比每次比较都调用过滤器好吗?具有多个过滤器,例如:

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

1 个答案:

答案 0 :(得分:1)

不要创建单独的变量,只需将每个条件*hash == symCopy->hash_table[*index]->hash d与其他条件一起返回:

&&

是的,这种模式比多次调用const filtered = array_of_things.filter(({ item, color, type, price, width }) => ( item === 'car' && color === 'red' && type === 'SUV' && price >= 100 && width === 10 )); 效率更高,因为单个.filter意味着该数组仅被迭代一次。