JavaScript

Javascript программисты, кто поможет решить?

Дан текст (строка), содержащий в себе группы букв, цифр, символов. Преобразовать текст, отсортировав каждую группу букв по алфавиту, каждую группу цифр в порядке убывания. Например: «cba1076 /’abfc3785,’’3946f» - «abc7610 /’abcf8753,’’9643f» . Не использовать строковые функции
Erbol Yessaliyev
Erbol Yessaliyev
101
let sorter1 = (a, b) => {
if (isNaN(+a) && isNaN(+b)) {
return a > b;
}
if (!isNaN(+a) && isNaN(+b)) {
return 1;
}
if (!isNaN(+b) && isNaN(+a)) {
return -1;
}
else {
return b - a;
}
}

let sorter2 = (a, b) => {
if (isNaN(+a) && isNaN(+b)) {
return a > b;
}
if (!isNaN(+a) && isNaN(+b)) {
return -1;
}
if (!isNaN(+b) && isNaN(+a)) {
return 1;
}
else {
return b - a;
}
}

let convert = (textData) => {
var divider1 = ' /’';
var divider2 = ',’’';
var dividedStrings = textData.split(divider1);
var dividedStrings2 = dividedStrings[1].split(divider2);
var parts = [dividedStrings[0]].concat(dividedStrings2);
parts[0] = splitString(parts[0]).sort(sorter1).join('');
parts[1] = splitString(parts[1]).sort(sorter1).join('');
parts[2] = splitString(parts[2]).sort(sorter2).join('');
return parts[0] + divider1 + parts[1] + divider2 + parts[2];

};

let splitString = (str) => {
let limit = str.length;
let array = [];
for (let i = 0; i < limit; i++) {
array.push(str[i]);
}
return array;
}

console.log(convert('cba1076 /’abfc3785,’’3946f'));
Сергей Орлов
Сергей Орлов
2 398
Лучший ответ
Сергей Орлов Одна проблема. Метод .split - строковый метод. Их использовать по условию нельзя. Поэтому надо как-то придумать, как разделить строки по строке-разделителю. Оставлю это для автора вопроса на самостоятельную работу )
врят ли ты сможешь сделать такую сортировку быстро
у тебя последний элемент не логичен - 9643f
элементы abc7610, abcf8753 в порядке убывания
а этот в порядке увлечения 9643f
--
а вообще все просто сравнивай
в цикле каждый символ
for ...if( arr[ i ] < arr[ i+1] ) { .. }
и переставляй местами
ST
S T
16 208