Получить все модели в базовом наборе, где атрибут НЕ равен некоторому значению

Это взято из документации Backbone.js:

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

Где вы можете получить массив моделей, где работа равна "Musketeer". Но как я поступаю наоборот? Как я могу получить массив моделей, где работа - это что-то еще, кроме "Musketeer"?

Ответ 1

Я не знаю, что-то прямо противоположное, но вы можете использовать filter с тем же эффектом.

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

Ответ 2

Если вы используете filter непосредственно в коллекции Backbone, вы должны использовать его следующим образом:

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

Затем notMusketeers будет массивом экземпляров модели Backbone.

Если friends - это просто массив объектов (стандартная коллекция), вы можете использовать знак подчеркивания filter следующим образом:

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

или

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