获取 Backbone.js 集合中属性不等于某个值的所有模型

mzaanser  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(145)

这取自Backbone.js文档:

var musketeers = friends.where({job: "Musketeer"});

你可以得到一个模型数组,其中job是相等的是“火枪手”。但我如何做相反的事情?我如何得到一个模型数组,其中job是其他任何东西,而不是“火枪手”?

envsm3lx

envsm3lx1#

我不知道有什么东西是直接相反的,但你可以使用过滤器来达到同样的效果。

var notMusketeers = friends.filter(function (friend) {
  return friend.job !== 'Musketeer';
});
tcomlyy6

tcomlyy62#

如果直接在Backbone集合上使用filter,则必须按以下方式使用:

var notMusketeers = friends.filter(function(model){
    return model.get('job') !== 'Musketeer';
});

那么notMusketeers将是一个 Backbone 模型示例数组。
如果friends只是一个对象数组(标准集合),则可以按以下方式使用下划线filter

var notMusketeers = _.filter(friends, function(obj){
    return obj.job !== 'Musketeer';
});

第六版
如果您可以使用ES6+功能,则const、解构和箭头函数可以使其不那么冗长:

const notMusketeers = friends.filter(({ job }) => job !== 'Musketeer');

相关问题