Filtrar y ordenar la colección troncal con una matriz de ID.

Soy bastante nuevo en Backbone, así que tengo algunos problemas que no puedo entender.

Tengo una colección Backbone con un poco más de 100 artículos. Quiero filtrarlos con una matriz de identificadores, que funciona bien, pero quiero que el orden de los elementos también se base en el orden de los elementos de esta matriz. Eso no está funcionando. Los otros métodos de clasificación parecen estar basados ​​en la ciencia, eso tampoco es lo que necesito. ¿Es posible obtener elementos utilizando este filtro y luego colocarlos en la colección en el orden que he definido?

Tengo una matriz de identificadores con los que filtro, esta matriz se ve así:

var dDefaultItems = ['1','2','146','3','4','9','26','8','96','10','11','54','145','273','38'];

El código para la recolección y el filtrado se ve así:

var ChannelCollection = Backbone.Collection.extend({        
    fetch : function() {
       var params = _.extend({}, arguments, { 
            data : { 
                "groupnumber" : "1000"
            }
        });
        this.constructor.__super__.fetch.apply(this, [params]);

    },

    model : Channel,

    url : function () {
        return utility.apiUrl('/myurl/tothething');  
    },

    filterData: function(params) {

        this.originalModels = this.models.slice();

        _.each(params, function(val, key){
            if (typeof val !== 'object') val = [ val ];
            this.models = _.filter(this.models, function(model){
                return _.indexOf(val, model.get(key)) !== -1;
            }, this);
        }, this);
        return this.reset(this.models).toJSON();
    },

    parse : function(json) {            

        return json.channelInfoList;
    }

 });

Luego, muestro esto en una vista con este código (hay otros bits de código para definir el modelo y otros atributos que no creo que sean relevantes, puedo estar equivocado, pero creo que alguien sabrá lo que necesito al mirar esta.)

var ChannelListView = Backbone.View.extend({

    initialize: function() {
       var _this = this;

        currentChannelList = new ChannelCollection();

        currentChannelList.once("sync", function() {
           _this.render();
        });

        currentChannelList.fetch();
    },
    render : function() {
      var _this = this;

      $(_this.el).empty();

     dust.render("list-channels", { channelList : currentChannelList.filterData({id: dDefaultItems})} , function(err, html) {

        var $el = $(html).appendTo($(_this.el));
      });  
    }
 });   

Respuestas a la pregunta(1)

Su respuesta a la pregunta