Как найти 2 рядом стоящие нечётные цифры?
Пользователь должен ввести хаотичные цифры в prompt("",""), например, 84753198546.
Дальше нужен код, который найдёт 2 рядом стоящих нечётных цифры, в нашем случае (75-первая пара), и поставит между ними восклицательный знак ->(7!5)
В итоге должно получиться (847!5!3!1!98546).
Такое задание мне дали, и я без понятия как должен выглядеть этот код.
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Самое простое решение - регулярное выражение:
result = prompt('Введите число:', 84753198546);
alert(result.replace(/\D/gim, '').replace(/([13579](?=[13579]))/gim, '$1!'));
Если Вам необходимо решение именно через массивы:
// Получаем строку с числом
let str = prompt('Введите число:', '84753K198546');
// Создаём массив из цифр разбиванием строки,
// указав в качестве разделителя любые символы,
// которые не являются цифрами
let arr = str.split(/\D*/);
// Создаём результирующий массив
let arr2 = [];
/* Перебираем элементы исходного массива */
for (var i = 0; i < arr.length; i++) {
// Заносим в результирующий массив
// текущий элемент исходного массива
arr2.push(arr[i]);
// Если текущий и следующий элементы исходного массива
// не имеют остатка при делении на 2, тогда...
if (arr[i] % 2 != 0 && arr[i + 1] % 2 != 0) {
// Добавляем в результирующий массив
// необходимый разделитель
arr2.push('!');
}
}
// Выводим результирующий массив преобразовав его в строку
alert(arr2.join(''));
Или так:
let str = prompt('Введите число:', '847531T98546');
let arr = str.split(/\D*/).map((c, i, a) => {
return (c % 2 && a[i + 1] % 2) ? c + '!' : c;
}).join('');
console.log(arr);