Магистральная коллекция, где предложение с условием ИЛИ

Я искал это в течение довольно долгого времени, но не смог найти способ с предложением where или условием. Например, если у меня есть коллекция Cars и я пытаюсь сделать следующее:

Cars.where({
            model: 1998,
            color: 'Black',
            make: 'Honda' 
          })

Итак, что будет сделано выше, это поиск car чья model является 1998 А ТАКЖЕ color является Black А ТАКЖЕ make является Honda,

Но мне нужен способ получить cars которые имеют одно из трех условий.

2 ответа

Cars.filter(function(car) {
    return car.get("model") === 1998 ||
        car.get("color") === "Black" ||
        car.get("make") === "Honda";
});

Я знаю, что это старый пост, но, может быть, это кому-нибудь пригодится.

У меня была похожая проблема, но немного проще, вот как я ее решил

var ids=[1,2,3,4];
var plans=this.collection.filter(function(plan){
            var rt=false;
            for(var i=0;i<this.whereOR.length;i++){
                rt=rt||plan.get('id')==this.whereOR[i];
            }
            return rt;
        },{whereOR:ids});

Я думаю, что это может быть адаптировано для решения предложенной проблемы следующим образом:

var search={model: 1998,color: 'Black',make: 'Honda'};
Cars.filter(function(car){
                var rt=false;

                for(key in this.whereOR) {
                    rt=rt||car.get(key)==this.whereOR[key];
                }
                return rt;
            },{whereOR:search});)

Надеюсь, это поможет кому-то!

Другие вопросы по тегам