Coderslang_Master выдаёт 1
Task 143
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 мы не можем запретить ученикам использовать то, что они выучили сами. В то же время в лекции есть вся информация которая нужна чтобы решить задачу. Если это оказывается не так, то мы дополняем лекцию.
Еще не читал ваши решения, по этому сначала выставлю свой вариант решения, затем прочту как вы решали это все. Сначала создал функцию разбивающую строку на массив (который получал каждый символ как отдельный элемент), затем создал новый массив. С помощью for and if прогнал каждый элемент массива и если условия соблюдались элемент вставлялся в новый массив. Затем Преобразовал новый массив в строку и методом trim() убрал пробелы. Когда возвращал сроку переопределил ее тип на численный с десятичными (parseFloat) и вывел результат. Все работает, горжусь собой =)
Код:
export const extractNumber = (s) => {
let oldMass = s.split('');
let newMass = [];
for (let i = 0; i < oldMass.length; i++) {
if ((oldMass >= 0) || (oldMass === '.')) {
newMass.push(oldMass);
}
}
let numbers = newMass.join('');
numbers.trim();
return parseFloat(numbers);
};