【发布时间】:2021-02-20 21:43:58
【问题描述】:
我有一个调用fetchGames 函数的输入字段:
fetchGames: debounce(function (searchQuery) {
this.gallery.forEach((item, index) => {
if (item.Key.includes(searchQuery)) {
this.filteredGallery.push(item.Key)
} else {
this.filteredGallery.splice(index, 1)
}
})
}, 500)
这类作品。我的 gallery 数组他的 3 个对象:
gallery: ['bali', 'brass', 'eclipse']
当我输入a 时,它会将bali 和brass 添加到filterGallery 数组中。
当我将l(使al)添加到输入时,函数会按预期从数组中删除brass,但它会向数组中添加另一个bali,因为item.Key 也包含@ 987654334@.
如何防止将对象添加到数组中已存在的数组中?
ps。使用 Vue2,您不能在 Set 对象上使用 v-for (afaik)。
【问题讨论】:
-
尝试使用
Set而不是Array,这样您就可以直接调用set.add而不必担心重复 -
是的,只需使用
Set或添加另一个if语句来检查该字符串是否已在filteredGallery 中。就我个人而言,我会缩短它并使用包含this.filteredGallery = this.gallery.map((item) => item.Key).filter((item) => item.includes(searchQuery))之类的过滤器 -
也许我应该说我正在使用 Vue2 循环通过
filteredGallery并且看起来你不能通过 Set 对象进行 v-for 。感谢@DominikMatis 成功了。智能映射和过滤结果并将其返回给数组变量。如果您想将其放在答案中,我会很乐意接受。 -
我会为这个画廊创建一个控制它的类
-
@PeterBoomsma ...关于最近提供的数组变异方法还有什么问题吗?
标签: javascript vuejs2