Javascript 基于另一数组的规则高级排序
我试着搜索一些类似于我想要的东西,但我没有找到,所以我来了 我将发布一个实际的例子,你们可以帮助我 我正在用Javascript构建这个应用程序,它有一个BJJ皮带系统。所以我得到的数据类似于:Javascript 基于另一数组的规则高级排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我试着搜索一些类似于我想要的东西,但我没有找到,所以我来了 我将发布一个实际的例子,你们可以帮助我 我正在用Javascript构建这个应用程序,它有一个BJJ皮带系统。所以我得到的数据类似于: belts = [{ color: 'white', stripes:2, date: '0000000000' // timestamp },{ color: 'blue', stripes:1, date: '0000000000' // timest
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'];
当我运行排序时,我将让我以前未排序的数组按照上述规则及其升序条纹的顺序显示
我不知道我会怎么做。有人能接受挑战并能帮助我吗
感谢var ordering={},//映射有效地查找sortIndex
排序器=[‘水果’、‘糖果’、‘蔬菜’];
对于(var i=0;iThanks Barmar,这正是我想要的!!!如果数组较大,则重复问题中可接受的答案会更好。
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;
});
var ordering = {}, // map for efficient lookup of sortIndex
sortOrder = ['fruit','candy','vegetable'];
for (var i=0; i<belt_rules.length; i++)
ordering[belt_rules[i]] = i;
belts.sort( function(a, b) {
return (ordering[a.type] - ordering[b.type]) || a.stripes - b.stripes;
});