получилось реализовать только через promise но этот вариант мне не подходит
можно с async await
Давай-ка ты, дружочек, определишься - подходит или нет. Потому что async/await - это тоже promise. Или ты об этом не знал? Ну так иди документацию почитай, разберись.
Возвращаясь к предыдущему вашему комментарию, "просто с переменной которая содержит одну строку" - так оно и есть, функция has_consecutive_characters принимает первым параметром (s) строку, в которой ищутся одинаковые символы, расположенные последовательно (второй параметр, count - наличие какого количества повторений надо проверить).
Антон, встречный вопрос - что принимает функция has_consecutive_characters в качестве первого параметра? Если ответ "не знаю", тогда вопрос другой - вы вообще в показанном коде хоть что-то поняли (кроме того, что имеет место быть создание массива)?
Меняйте ещё, опять говнокод получился. Во-первых, выходной формат не соответствует тому, что, по вашим же словам, вам было нужно. Во-вторых, входной формат не указан, значение не соответствует ни одному из ожидаемых форматов - значит, для парсинга будет применён Date, так что опять работать будет не во всех браузерах.
Враньё, не получилось - применение new Date не позволит получить '31.12.2021' из '12-31-2021'. Кстати, firefox, например, такую строку распарсить не сможет, будет Invalid Date.
Вы спросили, как рекурсивно обойти вложенные объекты/массивы, изменяя значения в объектах, если ключ соответствует заданному условию. Я показал как. Всё. А сейчас вы спрашиваете, как выполнить замену в строке - это не имеет ни малейшего отношения к исходному вопросу.