@b1gpups

Почему метод replace не стработал?

код должен выдавать 'One'. почему значения не сохраняется в strEval?

function wordedMath(expr) {
  let arrExpr = expr.split(' ');
  let arrayOfWords = ['zero', 'one', 'two', 'minus', 'plus'];
  let arrayOfNumbers = ['0', '1', '2', '-', '+'];
  let strEval = '';
  arrExpr.forEach((item, i) => {
  let cased = expr.toLowerCase();
    if(cased.includes(arrayOfWords)) {
      strEval += arrayOfNumbers[i]
    }
  });
  let result = eval(strEval);
  if(result === 1) result = 'One';
  if(result === 2) result = 'Two';
  if(result === 0) result = 'Zero';
  return result;
};

console.log(wordedMath("zero Plus one"))
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что вы не понимаете, что пишете.
Прочитайте, для начала, документацию:
https://developer.mozilla.org/ru/docs/Web/JavaScri...
const replaces = {
  zero: '0',
  one: '1',
  two: '2',
  plus: '+',
  minus: '-',
};
const wordedMath = (expr) => {
  const re = RegExp(`(${Object.keys(replaces).join('|')})`, 'g');
  const value = eval(
    expr.toLowerCase().replaceAll(re, (s) => replaces[s])
  );
  return Object.keys(replaces).find((e) => replaces[e] == value) ?? value;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы