Task 143
Coderslang_Master
И вновь здравствуйте)))
Я переписала код, результат вроде как выводит нужный, но при запуске проверки задачи пишет, что всё неправильно! 0_0
Код:
export const extractNumber = (s) => {
let s1 = s.replaceAll(' ', '');
let Num;
let n = 0;
for (let i = 0; i < s1.length; i++) {
if (s1[i]>=0 && s1[i]<=9) {
n = i;
break;
}
}
let m = 0;
for (let y = s1.length; y >= n; y--) {
if (s1[y]>=0 && s1[y]<=9) {
m = y;
break;
}
}
Num = s1.substring(n,m+1);
return Number(Num);
}
Результат запуска кода:
59.99 ///задача '$59.99'
1.35 ///задача 'EUR 1.35'
1 ///задача '1 BTC'
13245 ///задача 'agdflhwet galsdf 13245 sdflgkhytaol chalsdf'
Проверка задания:
Статус **FAILED**
Детали
Х 1. extractNumber должна возвращать число
Х 2. extractNumber должна правильно извлекать обычные числа
Х 3. extractNumber должна правильно извлекать десятичные числа
Подскажите, пожалуйста, что ему не нравится?
возможно есть еще варианты, при которых ваш код не сработает? я не в праве указывать и тем более сбивать с толку - но скажу что есть вариант решения задачи в одну строку. к сожалению в лекциях которые мы получаем не описаны все методы (да и не к чему - выучить их просто не возможно). для себя я нашел подходящим решение на основе метода строки replace
. и не потому, что он краткий, а именно потому, что мне показался самым простым.
Olesya проверь для входящей строки EUR 1
Coderslang_Master выдаёт 1
Olesya код выглядит хорошо. Попробуй перезапустить vscode и отправить на проверку еще раз.
Если не поможет, то удали все из функции и напиши return 0
. Если ошибка Х 1. extractNumber должна возвращать число
не уйдет, то будем проверять что не так с твоим аккаунтом.
Coderslang_Master
перезапуск не помог.
При return 0
первая ошибка уходит, но при возвращении текста функции - опять выдает, что всё неправильно.
Olesya Нашел проблему. Она на нашей стороне.
На сервере проверки задач использовалась версия node.js 14, которая не поддерживает функцию replaceAll
. Сейчас обновляем node.js до 16.4.0
Отправь повторно на проверку чуть позже.
Coderslang_Master спасибо! Всё получилось
Может кому то интересно будет, у меня покороче вышла функция.
export const extractNumber = (s) => {
let newS = s.split('');
for(let i = 0; i < newS.length; i++){
let str = '';
if(isNaN(newS) && newS != '.' || newS === ' '){
delete newS
}
}
return Number(newS.join(''));
}
Artis до регулярок думаю еще далеко по материалу))
их вобще не будет в материале лекций. имхо - это зло, мешающее учащемуся развивать свою логику. это когда ты уже знаешь что такое цикл, умеешь резать и склеивать строку - пожалуйста используй "регулярки", но нужно понимать, что иногда написать патерн будет намного сложнее и конечно итоге совсем не читабельно по сравнению с обычным циклом, сплитами, слайсами итд.
Artis Так суть всех задач - написать оптимальный рабочий код, а не краткий вариант....
Ведь даже ваш вариант можно было бы написать в одну строку - и код был бы рабочим, но не читаемым. Так само и с регулярками - вроде как и быстро пишутся (если понимаешь что писать), но потом постороннему человеку сидеть и разбираться что в патерне - лишняя головная боль!
salton так и я о том же, что не вижу толку от решения(примера) для учеников что вы написали используя регулярные выражения. Они все равно не поймут, а только с толку собьете. Тут и так почитаешь что сидят по несколько дней над задачей решение которой по сути занимает 3 минуты параллельно лениво попивая кофеек. Тут все ученики, кто пишет, пытается разобраться в задаче\коде. Судя по коментам ранее, Вы и сами не столь давно начали учиться(может я конечно ошибаюсь). Конечно Вы молодец что активничаете тут, это радует. Просто если хотите как говорится блеснуть полезной информацией то давайте развернуто чтобы люди понимали хотя бы что вы написали, ну или вообще не стоит писать сложных решений для ученика.
p.s. Если кратко, мы же учимся все тут, а не меряемся знаниями, если говоришь о чем-то, то нужно знать, о чем говоришь и понимать это самому, для того что бы правильно донести решение не знающим так, что бы они это поняли и запомнили. А регулярные выражение я бы не сказал что очень редко используются, как не крути и парсинг он в очень многих веб проектах нужен.
Artis информацию вы конечно выложили поучительную. Но видно так и не поняли для чего я выложил пример. Вы хвалились "кратким вариантом" - я вам показал ещё короче. Но в обеих случаях - короче, не значит правильно. Это я и пытался донести. Блеснуть полезной информацией цели не было и не будет. Я пока не готов к менторству. Просто помочь людям разобраться с задачей - можно!
Почитал подсказки и понял что ничего не понял))) много решений, которых не было в конспекте((
Например isNaN() или substring()
у меня получилось по своему (видимо мозг устал от 10 часового изучения)
export const extractNumber = (s) =>
{
let r = s.split('');
let w = [];
for (let i = 0; i < r.length; i++)
{
if (r >= 0 && r <= 9 || r === '.')
{
w = r;
}
}
return Number(w.join(''));
}
Artis будет, но но немного позже
Benstize мы не можем запретить ученикам использовать то, что они выучили сами. В то же время в лекции есть вся информация которая нужна чтобы решить задачу. Если это оказывается не так, то мы дополняем лекцию.