javascript - 使用基于另一个数组的规则进行高级排序

标签 javascript arrays sorting

<分区>

我试图搜索与我想要的类似的东西,但我没有找到它,所以我在这里。

我要发布一个实际的例子,所以你们可以帮助我。

我正在使用具有巴西柔术腰带系统的 Javascript 构建此应用。所以我拥有的数据类似于:

belts = [{
    color: 'white',
    stripes:2,
    date: '0000000000' // timestamp
},{
    color: 'blue',
    stripes:1,
    date: '0000000000' // timestamp
},{
    color: 'purple',
    stripes:0,
    date: '0000000000' // timestamp
},{
    color: 'purple',
    stripes:1,
    date: '0000000000' // timestamp
},{
    color: 'white',
    stripes:3,
    date: '0000000000' // timestamp
},{
    color: 'white',
    stripes:4,
    date: '0000000000' // timestamp
},{
    color: 'brown',
    stripes:1,
    date: '0000000000' // timestamp
},{
    color: 'black',
    stripes:0,
    date: '0000000000' // timestamp
}];

所以现在我想按腰带和条纹对它进行排序。

所以我想创建一个规则,其中包含需要排序的皮带的顺序。

类似于:

belt_rules = ['white','blue','purple','brown', 'black'];

当我运行排序时,我会得到我之前未排序的数组,以按照上述规则及其升序条纹的顺序显示。

我不知道我会怎么做。有人愿意接受挑战并能帮助我吗?

谢谢

最佳答案

belts.sort(function(a, b) {
    var acolor = belt_rules.indexOf(a.color);
    var bcolor = belt_rules.indexOf(b.color);
    var color_diff = acolor - bcolor;
    return color_diff || a.stripes - b.stripes;
});

关于javascript - 使用基于另一个数组的规则进行高级排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127414/

相关文章:

php - 检查关联数组是否包含键值对

python - 用户选择的变量从列表中删除

algorithm - 基数排序的性能特点

algorithm - 对 D 中的关联数组进行排序

javascript - 如何在 vue 3 中删除已弃用的 $listeners

javascript - 如何使用 jquery 在每个 div 中找到最后一个 div?

javascript - 将输入框中的值存储在数组中以计算总和

javascript - 使用 Coffeescript 读取本地文件

javascript - Json 列表在数组中 ionic 返回页面 HTML

sorting - 如何对文本 block 进行排序?