Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义排序主干集合_Javascript_Sorting_Backbone.js - Fatal编程技术网

Javascript 自定义排序主干集合

Javascript 自定义排序主干集合,javascript,sorting,backbone.js,Javascript,Sorting,Backbone.js,我有一个主干集合,我想根据类型对其进行分组,然后显示到html表中 我要排序的值不是按字母顺序排列的。比如说: var Animals = Backbone.Model.extend({ defaults: { animal_name: '', species: '', food_preference: '', characteristics: [], },

我有一个主干集合,我想根据类型对其进行分组,然后显示到html表中

我要排序的值不是按字母顺序排列的。比如说:

var Animals = Backbone.Model.extend({

        defaults: {
            animal_name: '',
            species: '',
            food_preference: '',
            characteristics: [],
        },

        initialize: function() {
            console.log('Animal being created...');
        }

    });
我想按食物偏好分类。请注意,食物偏好只能假设3个值:肉食动物、草食动物和杂食动物

我想先在桌子上展示所有杂食动物,然后是食肉动物,然后是食草动物。因为任何常规的排序功能都会首先显示食肉动物,因为它是按字母顺序排列的,所以这是行不通的

使用这些自定义功能对主干集合进行排序的最直观的方法是什么


谢谢

您可以提供一个自定义方法,根据要设置的顺序返回一个数字:

var AnimalsCollection = Backbone.Collection.extend({
    comparator: function(m) {
        switch (m.get('food_preference')) {
            case 'omnivores': return 1;
            case 'carnivore': return 2;
            case 'herbivores': return 3;
            default: return Infinity;
        }
    }
});
还有一个演示

var c=新主干。集合([
{动物名称:3,食物偏好:'食草动物'},
{动物名称:2,食物偏好:'食肉动物'},
{动物名称:1,食物偏好:'杂食'},
{动物名称:4}
]);
console.log(c.pull('animal_name'));
c、 比较器=功能(m){
开关(m.get(“食物偏好”)){
案例“杂食者”:返回1;
案例“食肉动物”:返回2;
案例“食草动物”:返回3;
默认值:返回无穷大;
}
};
c、 排序();
console.log(c.pull('animal_name'))

这正是我想要的。谢谢!