JavaScript
Javascript программисты, кто поможет решить?
Дан текст (строка), содержащий в себе группы букв, цифр, символов. Преобразовать текст, отсортировав каждую группу букв по алфавиту, каждую группу цифр в порядке убывания. Например: «cba1076 /’abfc3785,’’3946f» - «abc7610 /’abcf8753,’’9643f» . Не использовать строковые функции
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'));
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'));
Сергей Орлов
Одна проблема. Метод .split - строковый метод. Их использовать по условию нельзя. Поэтому надо как-то придумать, как разделить строки по строке-разделителю. Оставлю это для автора вопроса на самостоятельную работу )
врят ли ты сможешь сделать такую сортировку быстро
у тебя последний элемент не логичен - 9643f
элементы abc7610, abcf8753 в порядке убывания
а этот в порядке увлечения 9643f
--
а вообще все просто сравнивай
в цикле каждый символ
for ...if( arr[ i ] < arr[ i+1] ) { .. }
и переставляй местами
у тебя последний элемент не логичен - 9643f
элементы abc7610, abcf8753 в порядке убывания
а этот в порядке увлечения 9643f
--
а вообще все просто сравнивай
в цикле каждый символ
for ...if( arr[ i ] < arr[ i+1] ) { .. }
и переставляй местами
Похожие вопросы
- помогите решить задачу по javascript
- Помогите решить задачи в Javascript:
- Помогите решить задачу в JavaScript, тема: матрицы.
- Помогите решить два кода на javascript, чтобы потом понимать как решать похожие
- Помогите решить задачу
- Помогите решить задачу на языке java
- Помогите решить задачку по js
- Помогите решить задачку.
- Помогите решить задачу по js! Программа выводит все заглавные буквы в тексте. Как распределить эти буквы по алфавиту?
- Помогите решить в JS