избавление от мутабельной переменной
Стала изучать иммутабельность переменных. В задаче нужно избавится от мутабельной переменной и вместо цикла использовать 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
};
|
Цитата:
const command = "(al) G (al) () () G"
const o = {'(al)': 'al', '()': 'o'}
const val = command.split(' ').map(el => o[el] || el).join('')
alert(val)
|
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))
|
ksa,
оно, только не заметила, что в примере пробелы, а они не должны быть command = "(al)G(al)()()G" |
Цитата:
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)
|
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)
|
ksa,
Согласна с вами, что цикл не нужен, но я учусь решать в разных вариациях. Регулярные выражения не то, условия задачи избавится от мутабельной переменной и вместо цикла использовать map. Вот мне и интересен вариант решения |
| Часовой пояс GMT +3, время: 22:55. |