获取属性不等于某个值的骨干集合中的所有模型

问题描述 投票:10回答:2

这是从Backbone.js文档中获取的:

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

您可以在其中获得等于工作的一系列模型是“ Musketeer”。但是,我该怎么做相反呢?如何获得除“ Musketeer”外其他工作以外的其他模型?

javascript backbone.js
2个回答
12
投票

我不知道是完全相反的东西,但是您可以使用filter来达到相同的效果。

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

2
投票

如果直接在Backbone集合上使用filter,则必须使用这种方式:

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

然后notMusketeers将是骨干模型实例的数组。

如果friends只是对象数组(标准集合),则可以通过以下方式使用下划线filter

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

ES6

如果您可以使用ES6 +功能,const,解构和箭头功能可能会使它变得不那么冗长:

const notMusketeers = friends.filter(({ job }) => job !== 'Musketeer');
© www.soinside.com 2019 - 2024. All rights reserved.