【问题标题】:sort array of ints based on another array of ints根据另一个整数数组对整数数组进行排序
【发布时间】:2014-02-16 22:38:35
【问题描述】:

假设我有两个数组,像这样:

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

谢谢。

【问题讨论】:

    标签: javascript jquery arrays sorting


    【解决方案1】:

    试试这个:

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

    Demonstration

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

    【讨论】:

    • 哇,这一切都在一条线上!!不错的答案!
    【解决方案2】:

    您可以将其作为排序的替代方法,因为您已经有一个排序的元素数组。

    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 当您的答案弹出时,我正要添加类似的内容作为替代。
    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多