Javascript 使用lodash的过滤器

Javascript 使用lodash的过滤器,javascript,vue.js,lodash,Javascript,Vue.js,Lodash,如果没有相同类型和格式的元素,我想将元素添加到数组中。 我用for-loop做的,但是看起来很糟糕 for (i = 0; i < this.model.array.length; i++) { const selectedElement = this.model.array[ i ] if (selectedElement.value.format === item.value.format && selectedElement.value.typ

如果没有相同类型和格式的元素,我想将元素添加到数组中。 我用for-loop做的,但是看起来很糟糕

for (i = 0; i < this.model.array.length; i++) {
      const selectedElement = this.model.array[ i ]
      if (selectedElement.value.format === item.value.format && selectedElement.value.type === item.value.type) {
        this.model.array.splice(i, 1)
        this.model.array.push(item)
        break
      }
      if (i === this.model.array.length - 1) {
        this.model.array.push(item)
      }
    }
但它不工作,每次返回0数组。 我的想法是过滤这些元素(但它只是其中一个),它们的类型和格式与项相同,然后使用过滤后的数组推送某些内容。 或者,如果条件满足,可能还有另一种方法可以添加元素

项目如下所示:
过滤器中的布尔运算错误

考虑在循环中查找匹配项的原始条件:

selectedElement.value.format === item.value.format && selectedElement.value.type === item.value.type
让我们调用两个测试(或“谓词”)A和B,这样表达式就简化为:

A && B
过滤器
呼叫中,您希望保留不匹配的条目,即:

!(A && B)
这相当于:

!A || !B
!(A || B)
然而,你实际上写的是:

!A && !B
这相当于:

!A || !B
!(A || B)

提供数据,或者更好,提供可运行的example@Vulwsztyn嘿,我发布了物品的结构。在我看来,你需要的是
|
而不是
&&
-你有(不是A)和(不是B)=不是(A或B),而我认为你真正需要的不是(A和B),这是==(不是A)或(不是B)@Alnitak是的。非常感谢!换句话说,您希望保留两个(否定)条件之一失败的元素,而不是两者都失败的元素。