假设我有两个数组,如下:
var SortedArray = [25, 123, 2464, 112, 54, 51, 347, 4572, 634];
var ArrayToSort = [634, 25, 51, 123];
SortedArray
是一个包含许多元素顺序的数组。 ArrayToSort
仅包含SortedArray
的部分元素,ArrayToSort
中的每个元素都必定位于SortedArray
。
对ArrayToSort进行排序的最佳方法是什么,以便该数组中的元素以与SortedArray相同的顺序出现并获得此结果:
ArrayToSort = [25, 123, 51, 634];
感谢。
答案 0 :(得分:6)
试试这个:
ArrayToSort.sort(function(x, y) {
return SortedArray.indexOf(x) - SortedArray.indexOf(y);
});
注意:使用此方法,如果某个元素未显示在SortedArray
中,则会将其置于SortedArray
中找到的所有其他元素之前。
答案 1 :(得分:4)
您可以将此作为排序的替代方法,因为您已经有一个已排序的元素数组。
var sortedArray = [25, 123, 2464, 112, 54, 51, 347, 4572, 634],
arrayToSort = [634, 25, 51, 123],
sorted = sortedArray.filter(function (num) {
return arrayToSort.indexOf(num) !== -1;
});
console.log(sorted);
输出
[25, 123, 51, 634]
上