2014-02-16 4 views
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]; 

Спасибо.

ответ

6

Попробуйте это:

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

Demonstration

Примечание: Используя этот метод, если элемент не появляется в SortedArray, он будет помещен перед всеми другими элементами, которые находятся в SortedArray.

+0

Вау, все это в одной строке !! Хороший ответ! – 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

+0

+1 Я собирался добавить что-то подобное в качестве альтернативы, когда ваш ответ появился. –

Смежные вопросы