Backbone:返回具有特定标记的模型

Backbone: return models that have specific tags

本文关键字:模型 返回 Backbone      更新时间:2023-09-26

我有一个模型集合,这些模型都有一个标签数组。

如果我想抓取一个只有一个标签的模型,我会这样做:

models.filter(function(x) {
    return _.contains(x.get("tags"), 'google');
});

这将获取带有google标签的模型。我遇到的问题是,我不能在那里放更多的标签,我需要它是一个数组。我该如何抓取所有有多个标签的模型(例如:google, yahoo, apple)?contains方法只支持1个字符串,不支持数组

您可以这样使用_.intersection:

var want_all = ['google', 'yahoo', 'apple'];
models.filter(function(m) {
    return _.intersection(m.get('tags'), want_all).length == want_all.length;
});

_.intersection(a, b)将给你一个数组,其中包含ab共同的所有元素,如果交集与你正在寻找的数组/集合大小相同,那么m.get('tags')具有你正在寻找的所有元素