избавление от мутабельной переменной
Стала изучать иммутабельность переменных. В задаче нужно избавится от мутабельной переменной и вместо цикла использовать 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, время: 13:57. |