Сортировка по строчке: угловая - PullRequest
0 голосов
/ 20 ноября 2018

Я создал список

let keywords = ['do', 'if', 'in', 'for', 'new', 'try', 'for','var'];

Теперь я могу фильтровать по строке и сортировать по убыванию и по возрастанию.

Но яЯ не могу выполнить сортировку на основе строки,

EX: - Мне нужно отсортировать список с помощью ' для ' ( для должен находиться сверхусписок и остальные будут как есть).

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Насколько я понимаю, вы хотите нарезать отсортированный список, например так:

keywords.sort();
var result = keywords.slice(keywords.findIndex(function(item){ return item == "for"; }));
0 голосов
/ 20 ноября 2018
let keywords = ['do', 'if', 'in', 'for', 'new', 'try', 'for','var'];
let spliceArray = keywords; //For this line there is for sure a more elegant solution.

const queryIndex = keywords.findIndex(entry => entry === 'for');

spliceArray.splice(queryIndex, 1);

const newKeywords = [keywords[queryIndex], ...spliceArray];
0 голосов
/ 20 ноября 2018

По сути, вам просто нужно изменить обратный вызов функции сортировки:

let keywords = ['do', 'if', 'in', 'for', 'new', 'try', 'for','var'];

const sortWithWord = (words, firstWord) => words.sort((a, b) => {
    if (a === firstWord) return -1;
    return a.localeCompare(b);
});

//will print  ["new", "do", "for", "for", "if", "in", "try", "var"]
console.log(sortWithWord(keywords, "new"));

Конечно, условие сортировки может быть другим, но если вы хотите, чтобы определенное слово было первым, у вас будетвернуть отрицательное значение при сравнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...