我有一个大小如下的数组:
var arr = [
'small',
'small',
'small',
'small',
...
'medium',
'medium',
'medium',
'medium',
...
'big',
'big',
...
];
我需要按照这个顺序重新组织这个数组:
var order = ['small', 'small', 'medium', 'medium', 'big'];
所以结果最终是这样的:
var arr = [
'small',
'small',
'medium',
'medium',
'big',
'small',
'small',
'medium',
'medium',
'big'
...
];
我知道 SO 中的其他类似问题,但到目前为止我找不到任何东西。我不确定如何处理这个问题。我在想
sort
应该做,但我要测试什么?这似乎很简单,但我被卡住了,不知道从哪里开始。有什么提示吗?
最佳答案
只需为您的排序方法定义一个记分器。
这是你的代码。试试看
var init_arr = ['small', 'big', 'big', 'medium'];
var scorer = {
small: 0,
medium: 1,
big: 2
}
// You can use the same array too. I am creating new one.
var final_arr = init_arr.sort(function(a,b) {
return scorer[a]-scorer[b];
});
alert(final_arr); //small, medium, big, big
Working Fiddle
关于javascript - 根据另一个数组的顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15540211/