Здесь много хороших ответов, но я хотел бы отметить, что их можно очень просто расширить, чтобы добиться более сложной сортировки. Единственное, что вам нужно сделать, это использовать оператор OR для цепочки сравнения, например:
objs.sort((a,b)=> fn1(a,b) || fn2(a,b) || fn3(a,b) )
Где fn1
, fn2
, ... являются функциями сортировки, которые возвращают [- 1,0,1]. Это приводит к «сортировке по fn1», «сортировке по fn2», которая в значительной степени равна ORDER BY в SQL.
Это решение основано на поведении оператора ||
, который оценивает значение первое оцениваемое выражение, которое может быть преобразовано в true .
Простейшая форма имеет только одну встроенную функцию:
// ORDER BY last_nom
objs.sort((a,b)=> a.last_nom.localeCompare(b.last_nom) )
Имея два шага с last_nom
, порядок сортировки first_nom
будет выглядеть так:
// ORDER_BY last_nom, first_nom
objs.sort((a,b)=> a.last_nom.localeCompare(b.last_nom) ||
a.first_nom.localeCompare(b.first_nom) )
Общая функция сравнения может быть примерно такой:
// ORDER BY
let cmp = (a,b,n)=>a[n].localeCompare(b[n])
Эта функция может быть расширена для поддержки числовых полей , чувствительность к регистру, произвольные типы данных и т. д.
Вы можете использовать его с привязкой к ним по приоритету сортировки:
// ORDER_BY last_nom, first_nom
objs.sort((a,b)=> cmp(a,b, "last_nom") || cmp(a,b, "first_nom") )
// ORDER_BY last_nom, first_nom DESC
objs.sort((a,b)=> cmp(a,b, "last_nom") || -cmp(a,b, "first_nom") )
// ORDER_BY last_nom DESC, first_nom DESC
objs.sort((a,b)=> -cmp(a,b, "last_nom") || -cmp(a,b, "first_nom") )
. Дело в том, что чистый JavaScript с функциональным подходом может принять вас долгий путь без внешних библиотек или сложного кода. Это также очень эффективно, так как не нужно выполнять синтаксический анализ строк
Я наконец выяснил, как сделать это.
я просто хотел упомянуть заранее, что я действительно пытался запуститься с новой установки Eclipse, экспортировать предпочтения в .epf
файл, изменить всего единственные настройки, экспорт снова, и сравнить файлы. К моему удивлению пытаясь импортировать настройки из минимального .epf
файл не работал надежно также.
решение, которое работало на меня, состояло в том, чтобы скопировать эти файлы: {Eclipse workspace directory}/.metadata/.plugins/org.eclipse.core.runtime/.settings/*.prefs
я попробовал новую установку Eclipse на другой машине и после копирования тех файлов, все мои настройки были восстановлены отлично.
Я экспортировал бы предпочтение прежде, чем изменить цвет, и затем после.
Тот путь, Вы были бы в состоянии изолировать определенные правила предпочтительного файла затмения в один меньший файл и:
Такая стратегия может быть далее усовершенствована в несколько маленьких файлов настроек (один для Java, один для JSP, HTML, CSS...), чтобы к лучшему анализу потенциальных побочных эффектов при переимпорте тех настроек.
Я удалил недавно измененный файл * .prefs из следующего dreictory \ myworkspace.metadata.plugins \ org.eclipse.core.runtime.settings \ и импортировал существующие экспортированные настройки.
I Я первый, кто ответит на этот вопрос, насколько мне известно :), Потому что даже я много боролся.
Спасибо
Eclipse CDT хранит «Раскраску синтаксиса» в файле org.eclipse.cdt.ui.prefs
Он находится, например, здесь: C: \ eclipse \ workspace.metadata.plugins \ org.eclipse.core.runtime.settings \
Скопируйте и вставьте поверх одного в свой новый экземпляр eclipse. У меня это сработало при переходе с 3.4 на 3.5