基于另一个int数组排序int数组

时间:2014-02-16 22:38:36

标签: javascript jquery arrays sorting

假设我有两个数组,如下:

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];

感谢。

2 个答案:

答案 0 :(得分:6)

试试这个:

ArrayToSort.sort(function(x, y) {
    return SortedArray.indexOf(x) - SortedArray.indexOf(y);
});

Demonstration

注意:使用此方法,如果某个元素未显示在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] 

jsFiddle