Как найти 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);

→ Ссылка