Мне нужен сортировка массива, сортировка элементов из предварительно упорядоченного массива в том же порядке. Пример:Сортировка массива, определение приоритетов для некоторых элементов
Input: [ 5, 4, 7, 2, 3, 9, 8 ]
Preordered: [ 1, 2, 4, 3 ]
В основном, preordered
массив заставит input
массив следовать этот заказ, но только если элемент существует на обоих. Если этого не существует, будет проверяться следующий индекс. Элементы, которые не существуют в массиве preordered
, сохранятся в исходном порядке. Продолжая пример:
▼ ▼ ▼ // exists on preordered array
Input: [ 5, 4, 7, 2, 3, 9, 8 ]
▼ // not exists on index array, so ignore it:
Preordered: [ 1, 2, 4, 3 ].intersect(input) => [ 2, 4, 3 ]
При том, что мы можем определить, что три пункта input
существует на preordered
массиве. Таким образом, эти предметы будут первыми по результату. Остальные пункты input
будет держать оригинальный заказ, но после первого рода:
▼ ▼ ▼ // keeping preordered array order
Result: [ 2, 4, 3, 5, 7, 9, 8 ]
▲ ▲ ▲ ▲ // keeping others items original order
Обратите внимание, что предупорядоченное сохранит первоначальный порядок.
PS. Я могу использовать underscore
, при необходимости.
Так что ничего не нужно сортировать в конечном счете, просто группируя пересечение, добавляя их и добавляя остатки входного массива впоследствии? – Trace
Могут ли 'Input' и/или' Preordered' иметь дубликаты? –
@depperm Я пробовал раньше и не работал (я не помню перекресток), но при написании он помогает мне решить мою проблему - ответы на первом месте и мне очень помогают. Но как его можно использовать для других разработчиков (возможно?), Поэтому я разместил его. –