salton спасибо за а5а, добавить знак равенства во втором "for", теперь программа находит и их.
А console.log() я уже всё проверяла все действия, всё выводит, как то задумано. Поэтому и говорю, что не понимаю в чем ошибка.

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

    • Olesya ответили на это сообщение.

      Olesya код выглядит хорошо. Попробуй перезапустить vscode и отправить на проверку еще раз.

      Если не поможет, то удали все из функции и напиши return 0. Если ошибка Х 1. extractNumber должна возвращать число не уйдет, то будем проверять что не так с твоим аккаунтом.

      • Olesya ответили на это сообщение.

        Coderslang_Master
        перезапуск не помог.
        При return 0 первая ошибка уходит, но при возвращении текста функции - опять выдает, что всё неправильно. 🙁

          Olesya Нашел проблему. Она на нашей стороне.

          На сервере проверки задач использовалась версия node.js 14, которая не поддерживает функцию replaceAll. Сейчас обновляем node.js до 16.4.0

          Отправь повторно на проверку чуть позже.

          • Olesya ответили на это сообщение.
            3 месяца спустя

            Может кому то интересно будет, у меня покороче вышла функция.
            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(''));
            }

            • salton ответили на это сообщение.

              Artis чтоб совсем уж кратко, то тогда уже так:

              export const extractNumber = (s) => {
                return Number(s.replace(/[^0-9,\.]/g,""));
              }

              ps. использовать никому не рекомендую подобное решение, ни в этой задаче, ни в других подобных. это чисто для ознакомления

              • Artis ответили на это сообщение.

                salton до регулярок думаю еще далеко по материалу))

                • salton ответили на это сообщение.

                  Artis до регулярок думаю еще далеко по материалу))

                  их вобще не будет в материале лекций. имхо - это зло, мешающее учащемуся развивать свою логику. это когда ты уже знаешь что такое цикл, умеешь резать и склеивать строку - пожалуйста используй "регулярки", но нужно понимать, что иногда написать патерн будет намного сложнее и конечно итоге совсем не читабельно по сравнению с обычным циклом, сплитами, слайсами итд.

                  • Artis ответили на это сообщение.

                    salton
                    очень жаль что не будет лекции о регулярках.
                    В таком случае не вижу смысла писать решение с регуляркой не расшифровав ее.
                    Тогда бы это было действительно для ознакомления, а так только новичков с толку сбивать...

                      Artis Так суть всех задач - написать оптимальный рабочий код, а не краткий вариант....
                      Ведь даже ваш вариант можно было бы написать в одну строку - и код был бы рабочим, но не читаемым. Так само и с регулярками - вроде как и быстро пишутся (если понимаешь что писать), но потом постороннему человеку сидеть и разбираться что в патерне - лишняя головная боль!

                      • Artis ответили на это сообщение.

                        salton так и я о том же, что не вижу толку от решения(примера) для учеников что вы написали используя регулярные выражения. Они все равно не поймут, а только с толку собьете. Тут и так почитаешь что сидят по несколько дней над задачей решение которой по сути занимает 3 минуты параллельно лениво попивая кофеек. Тут все ученики, кто пишет, пытается разобраться в задаче\коде. Судя по коментам ранее, Вы и сами не столь давно начали учиться(может я конечно ошибаюсь). Конечно Вы молодец что активничаете тут, это радует. Просто если хотите как говорится блеснуть полезной информацией то давайте развернуто чтобы люди понимали хотя бы что вы написали, ну или вообще не стоит писать сложных решений для ученика.

                        p.s. Если кратко, мы же учимся все тут, а не меряемся знаниями, если говоришь о чем-то, то нужно знать, о чем говоришь и понимать это самому, для того что бы правильно донести решение не знающим так, что бы они это поняли и запомнили. А регулярные выражение я бы не сказал что очень редко используются, как не крути и парсинг он в очень многих веб проектах нужен.

                        • salton ответили на это сообщение.

                          Artis информацию вы конечно выложили поучительную. Но видно так и не поняли для чего я выложил пример. Вы хвалились "кратким вариантом" - я вам показал ещё короче. Но в обеих случаях - короче, не значит правильно. Это я и пытался донести. Блеснуть полезной информацией цели не было и не будет. Я пока не готов к менторству. Просто помочь людям разобраться с задачей - можно!

                          4 месяца спустя

                          Почитал подсказки и понял что ничего не понял))) много решений, которых не было в конспекте((
                          Например 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(''));
                          }

                            7 дней спустя

                            Benstize мы не можем запретить ученикам использовать то, что они выучили сами. В то же время в лекции есть вся информация которая нужна чтобы решить задачу. Если это оказывается не так, то мы дополняем лекцию.

                            Написать ответ...