JS сортировать массив по трем типам сортировки

Мне нравится это решение (из Matplotlib Ploutting Cookbook ):

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

x = [0,5,9,10,15]
y = [0,1,2,3,4]

tick_spacing = 1

fig, ax = plt.subplots(1,1)
ax.plot(x,y)
ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
plt.show()

Это решение дает вам явное управление интервалом тика с помощью номера, указанного в ticker.MultipleLocater() , позволяет автоматическое определение предела и легко читается позже.

3
задан Nina Scholz 17 January 2019 в 13:12
поделиться

1 ответ

Вам нужна функция, которая возвращает значение для поэтапной сортировки.

Внутри обратного вызова для сортировки вам нужно вернуть дельту двух значений, которая отражает отношение между двумя строками.

const compareWith = term => string => {
        if (string === term) return 1;
        if (term.startsWith(string)) return 2; // switch string and term
        if (string.includes(term)) return 3;   // use includes
        return Infinity;                       // unknown strings move to the end
    };

var array = ['Something here Hello', 'Hell', 'Hello'],
    term = 'Hello',
    order = compareWith(term);

array.sort((a, b) => order(a) - order(b));

console.log(array);

0
ответ дан Nina Scholz 17 January 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: