@wannacry220
Обучаюсь, стремлюсь стать Front-End разработчиком

Как из string «ok» и «+» Вытащить значение true но при «-» и «0» оставалось false?

должно выйти так:
getStatistic('Boris', '-') === 'Boris doesn't understand'
getStatistic('Boris', '0') === 'Boris doesn't understand'
getStatistic('Boris', '') === 'Boris doesn't understand'
getStatistic('Boris', '1') === 'Boris understands'
getStatistic('Boris', '+++') === 'Boris understands'
getStatistic('Boris', 'okay') === 'Boris understands'
getStatistic('Boris', NaN) === 'server error'
getStatistic('Boris', null) === 'server error'

Написал пока так. Если что не бейте, только учусь :)

getStatistic(`Boris`, '+')
function getStatistic(name, answer) {
 const t = (Number(answer));
 const g = (parseFloat(t));
 const r = (Boolean(g));


if (r === false){
  console.log(name + ` doesn't understand` )
}
else if (r === true){
  console.log(name + ` understand`)
}
}
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@syntaxorange
Используйте объектный литерал для хранения ассоциативных значений.
Кстати, объект `Number` и нижележащие объекты можно не обёртывать оператором группировки `()`.

function getStatistic(name, answer) {
    const r = {
        '+': true,
        'ok': true,
        '-': false,
        '0': false
    };

    if (r[answer] === false) {
        console.log(name + ` doesn't understand` )
    } else {
        console.log(name + ` understand`)
    }
}

getStatistic(`Boris`, '-')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
WblCHA
@WblCHA
Не очень понял, но, к примеру, можно так:
const answerToBoolean = (answer) => {
  switch(answer) {
    case 'ok':
    case '+':
      return true;
      
    case '0':
    case '-':
      return false;
     
    default:
      return null;
  }
}


spoiler
Хотя я не очень понимаю зачем отдельно отрицательные ответы отмечать, по мне так лучше только согласие сохранить:
const agreeAnswers = ['ok', '+', 'true', 'agree'];

const answerToBoolean = (answer) => agreeAnswers.includes(answer);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы