基于另一个整数数组对整数数组进行排序

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

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个回答

6

试试这个:

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

演示

注意:使用此方法,如果一个元素没有出现在SortedArray中,它将被放置在找到的所有其他元素之前。


哇,这一行代码就完成了这么多事情!非常棒的答案! - frenchie

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

+1 当你的答案出现时,我正要添加类似的替代方案。 - p.s.w.g

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接