【发布时间】:2021-07-14 19:32:19
【问题描述】:
如果没有相同类型和格式的元素,我想将元素添加到数组中。 我用 for 循环做的,但看起来很糟糕。
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)
}
}
你能告诉我怎么做这个 lodash 过滤器吗? 我尝试过这样的事情:
let filter = _.filter(this.model.array, function (o) {
return ((o.value.type !== item.value.type) && (o.value.format !== item.value.format)) })
但它不起作用,它每次都返回 0 数组。 我的想法是过滤这些类型和格式与项目相同的元素(但它只是一个),然后使用这个过滤后的数组推送一些东西。 或者如果满足条件,也许还有另一种方法可以添加元素?
项目如下所示:
【问题讨论】:
-
提供数据甚至更好,一个可运行的例子
-
@Vulwsztyn 嘿,我发布了项目的结构。
-
在我看来你需要
||而不是&&- 当我认为你真正需要的是(不是 A)和(不是 B)== 不是(A 或 B)时not(A and B) which == (not A) or (not B) -
@Alnitak 是的,就是这样。非常感谢!
-
换句话说,您希望保留两个(否定)条件中任何一个都失败的元素,而不是两者都失败的元素。
标签: javascript vue.js lodash