Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отформатированный массив элементов (https://javascript.ru/forum/misc/84111-otformatirovannyjj-massiv-ehlementov.html)

NovichokJS 04.06.2022 11:23

Отформатированный массив элементов
 
Подскажите пожста, что нужно вставить вместо троеточия в моем коде чтобы дало нужный результат?
Надо чтобы в новый массив не попадали элементы с буквами.

const cleanTransactionsList = arrTransactions => {
    let arrToStr = arrTransactions.join().trim();

    let arrFormatted = arrToStr.split(',');

    let arrRes = arrFormatted.map((elem) => {
        if (elem.includes(...)) { ... }
        return '$' + parseFloat(elem).toFixed(2);

    });

    return arrRes;
}

console.log(cleanTransactionsList(['  1.9 ', '16.4', 17, ' 1 dollar ']));
// ['$1.90', '$16.40', '$17.00']

рони 04.06.2022 11:31

NovichokJS,
const cleanTransactionsList = arrTransactions => {
            return arrTransactions.filter(elem => elem == +elem).map(elem => {
                return '$' + Number(elem).toFixed(2);
            });
        }
        console.log(cleanTransactionsList(['  1.9 ', '16.4', 17, ' 1 dollar ']));
        // ['$1.90', '$16.40', '$17.00']

NovichokJS 04.06.2022 11:38

Цитата:

Сообщение от рони (Сообщение 545902)
NovichokJS,
const cleanTransactionsList = arrTransactions => {
            return arrTransactions.filter(elem => elem == +elem).map(elem => {
                return '$' + Number(elem).toFixed(2);
            });
        }
        console.log(cleanTransactionsList(['  1.9 ', '16.4', 17, ' 1 dollar ']));
        // ['$1.90', '$16.40', '$17.00']

Тогда вопросы есть)
1). Что значит +elem ?
2). можно всё же условие вставить в мой код, я так старался соорудив его и хотелось получить условия чтобы он сработал. Понимаю что мой код не очень может качественный.
Заранее благодарю!

NovichokJS 04.06.2022 11:42

Рони, также я запустил ваш код, он выводит только [ '$17.00' ] - подхватывает только цифры, а строчные элементы массива нет

рони 04.06.2022 11:49

1.
Цитата:

Сообщение от NovichokJS
Что значит +elem ?

получение числа из строки, тоже что Number(elem)
2. не осилил ...
3. не верю

NovichokJS 04.06.2022 11:52

Цитата:

Сообщение от рони (Сообщение 545905)
1.
получение числа из строки, тоже что Number(elem)
2. не осилил ...
3. не верю

я понял. Нужно чтобы ' 1 dollar ' не попадал в новый массив, так как там есть буквы

рони 04.06.2022 11:54

Цитата:

Сообщение от NovichokJS
подхватывает только цифры, а строчные элементы массива нет

в каком браузере такая фишка?

NovichokJS 04.06.2022 12:05

Цитата:

Сообщение от рони (Сообщение 545908)
в каком браузере такая фишка?

прошу прощение, то я просто исправил сразу в вашем коде == на === и поэтому вывело только [ '$17.00' ].
Всё работает. А каким образом убираются всё лишнее? имею ввиду пробелы. Получается что метод filter() привел в порядок(удалил пробелы) ?

NovichokJS 04.06.2022 12:10

рони,
и еще вопрос последний. Как так выходит что это выражение elem => elem == Number(elem) не запушило в новый массив элемент NaN вместо '1 dollar' ?
Ведь если сделать console.log(Number('1 dollar')); то получаем NaN

рони 04.06.2022 12:18

NovichokJS,
удалил пробелы Number, когда строку преобразовывал в число.
== не строгий метод сравнения, тоже самое попытался преобразовать в числа оба операнда, в отличие от === который сравнивает тип, поэтому ничего не преобразует.


Часовой пояс GMT +3, время: 10:04.