在JavaScript中向过滤器功能添加条件

时间:2019-02-13 01:24:31

标签: javascript filter

我有一个名为filteredAnimals的对象数组,该数组返回给定过滤器中存在的动物。

df$num<-as.numeric(df$num)
which(duplicated(df[c('name', 'state',abs('num'))]),)

Error in abs("num") : non-numeric argument to mathematical function

有没有办法在一次通话中将其合并?我有些沮丧,因为除非满足条件,否则将不会拨打电话。我当时在考虑制作一个函数,但是我觉得有更好的方法可以做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以使用三个条件:

const finalFilteredAnimals = filteredAnimals.filter(({ animal_type }) => (
  (dog.present || !animal_type.includes('Dog')) &&
  (cat.present || !animal_type.includes('Cat')) &&
  (fish.present || !animal_type.includes('fish'))
));

请注意,最好将dogcatfish放在较大的对象(例如animals)中,以便可以迭代数组改为['Dog', 'Cat', 'fish']

const finalFilteredAnimals = filteredAnimals.filter(({ animal_type }) => (
  ['Dog', 'Cat', 'fish'].every(animName => (
    animal[animName].present || !animal_type.includes(animName)
  ))
));