Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.05.2021, 18:15
Новичок на форуме
Отправить личное сообщение для ekaterina22 Посмотреть профиль Найти все сообщения от ekaterina22
 
Регистрация: 17.05.2021
Сообщений: 9

избавление от мутабельной переменной
Стала изучать иммутабельность переменных. В задаче нужно избавится от мутабельной переменной и вместо цикла использовать map. Не получается это реализовать.
пример: command = "(al)G(al)()()G"
G -> G
() -> o
(al) -> al
результат: "alGalooG"

let interpret = function (command) {
    let string = '';
    for (let i = 0; i < command.length; i++)
        if (command[i] === '(' && command[i + 1] === ')') {
            string += 'o'
        } else if (command[i] !== '(' && command[i] !== ')') {
            string += command[i]
        }

    return string
};

Последний раз редактировалось ekaterina22, 24.05.2021 в 20:26.
Ответить с цитированием
  #2 (permalink)  
Старый 24.05.2021, 19:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от ekaterina22
В задаче нужно избавится от мутабельной переменной и вместо цикла использовать map.
Оно?

const command = "(al) G (al) () () G"
const o = {'(al)': 'al', '()': 'o'}
const val = command.split(' ').map(el => o[el] || el).join('')
alert(val)
Ответить с цитированием
  #3 (permalink)  
Старый 24.05.2021, 19:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

ekaterina22,
let command = "(al) G (al) () () G", reg = /((?<=\()(.*?)(?=\)))|[^()\s]/g, empty = "o";
 function interpret(command, reg, empty)
 {
    return (command.match(reg)||[]).map(a => a ? a.trim() : empty).join("")
 }
  alert(interpret(command, reg, empty))
Ответить с цитированием
  #4 (permalink)  
Старый 24.05.2021, 20:29
Новичок на форуме
Отправить личное сообщение для ekaterina22 Посмотреть профиль Найти все сообщения от ekaterina22
 
Регистрация: 17.05.2021
Сообщений: 9

ksa,
оно, только не заметила, что в примере пробелы, а они не должны быть
command = "(al)G(al)()()G"
Ответить с цитированием
  #5 (permalink)  
Старый 24.05.2021, 21:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от ekaterina22
не заметила, что в примере пробелы, а они не должны быть
Вариант "без пробелов"...

const command = '(al)G(al)()()G'
const o = {'(al)': 'al', '()': 'o'}
const re = /\(.*?\)|./g
const val = command.match(re).map(el => o[el] || el).join('')
alert(val)
Ответить с цитированием
  #6 (permalink)  
Старый 24.05.2021, 21:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

ekaterina22, тут кагбэ и цикл-то не нужен совсем...

const command = '(al)G(al)()()G'
const o = {'(al)': 'al', '()': 'o'}
const re = /\((al)?\)/g
const val = command.replace(re,el => o[el])
alert(val)
Ответить с цитированием
  #7 (permalink)  
Старый 24.05.2021, 22:09
Новичок на форуме
Отправить личное сообщение для ekaterina22 Посмотреть профиль Найти все сообщения от ekaterina22
 
Регистрация: 17.05.2021
Сообщений: 9

ksa,
Согласна с вами, что цикл не нужен, но я учусь решать в разных вариациях.
Регулярные выражения не то, условия задачи избавится от мутабельной переменной и вместо цикла использовать map. Вот мне и интересен вариант решения
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение значения переменной в режиме реального времени The_FactioN jQuery 3 09.03.2016 12:20
Значение переменной присваивается только со второй попытки thesun Общие вопросы Javascript 9 29.01.2016 20:52
посылка переменной kent0026 jQuery 5 04.01.2014 17:34
Как значение переменной вставить в имя переменной? jsgogo Общие вопросы Javascript 3 02.06.2013 12:11
Значение переменной, как имя для другой переменной Kosty@n Общие вопросы Javascript 2 15.12.2012 22:58