我知道这个问题是旧的,你有你当前使用的是答案,但我想提供了一个解决方案这个例子和JSFiddle将与任何类型的修改工作,你可能会结束。
注意原始数组中剩余的任何内容都会被添加到新数组的末尾,并且不会被排除。如果阵列中的项目不足以满足order
的要求,则会从订单中跳过缺失的元素。现在
,给该函数:
function mySort(arr, order) {
var newAr = [];
var orIndex = 0;
while(arr.length != 0) {
var type = order[orIndex];
var ind = arr.indexOf(type);
if(ind != -1) {
newAr.push(type);
arr.splice(ind, 1);
}
orIndex++;
if(orIndex >= order.length) {
orIndex = 0;
}
}
return newAr;
}
这个做什么,是需要你的例子数组:
var arrTest = [
'small',
'small',
'small',
'small',
'small',
'small',
'small',
'small',
'medium',
'medium',
'medium',
'medium',
'medium',
'medium',
'medium',
'medium',
'big',
'big',
'big',
'big',
];
var orderTest = ['small', 'small', 'medium', 'medium', 'big'];
现在,你可以改变这些所有你想要的,但它确实对它们进行文本搜索,所以如果你想对它进行排序,请确保它在完整数组和顺序数组中都是相同的。现在,使用的功能,你会怎么做:
var sortedArray = mySort(arrTest, orderTest);
或者,我在小提琴如何证明:
alert(mySort(arrTest, orderTest).join('\n'));
这应该涉及两个任何情况下工作,并且为了能很容易被修改。
希望有帮助!
我认为你需要在前后显示数组的实际例子。现在我看不到在输出中显示的数组是什么使数组分开显示 – mplungjan 2013-03-21 05:46:56
标题:'用另一个数组对数组进行排序'等待什么? – 2013-03-21 06:31:35
@Derek:随意编辑,不知道如何更好地定义这个问题... – elclanrs 2013-03-21 06:36:48