Не может parseInt в проекте React продолжать получать NaN

Не может parseInt в проекте React продолжать получать NaN Итак, в настоящее время я пытаюсь добавить предметы из объекта вместе с ценами, чтобы быть точным. Когда я пытаюсь разобрать элементы с помощью parseInt, я продолжаю получать NaN.

Я попытался воспроизвести его на repl.it, и он отлично работает, также я попытался использовать Number вместо parseInt и получил те же результаты.

    class Cart extends Component {
    constructor(props) {
        super(props);
        this.add = this.add.bind(this);
    }
    componentDidMount() {
        this.props.getCart();
    }

    add(array) {
        let num = [];
        let parse = [];
        console.info(array);
        for (let i = 0; i < array.length; i++) {
            parse.push(array[i].price);
        }
        console.info(parse);
        for (let i = 0; i < parse.length; i++) {
            num.push(parseInt(parse[i]));
        }
        console.info(num);
        let sum = num.reduce((acc, val) => {
            return acc + val;
        }, 0);
        console.info(sum);
    }
    render() {
        const { cart } = this.props.itemReducer;
                this.add(cart);

У меня есть несколько console.info первый показывает мои объекты второе показывает, что я вытащил свои числа в переменной ["$379,99", "$1,499,99"] третий, где я фактически выполняю функцию parseInt, - это когда я получаю [NaN, NaN]`

Это, вероятно, не работает, потому что у вас есть знак доллара впереди и разделители запятой для вашего значения. Попробуйте убрать запятые, должно получиться.

Muljayan 17.07.2019 05:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
1 061
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В вашей строке есть знак $. Убери знак и попробуй

let nanNum = parseInt("$1477")
console.info(nanNum) //This will print NaN

let parsedNum = parseInt("$147,7.05".replace(/[^0-9\.]+/g,""))
console.info(parsedNum)

@ ravibagul91 Работает без каких-либо изменений. Обновленный ответ с предлагаемым значением

Mohit Mutha 17.07.2019 06:08

Это удаление .05 из значения.

ravibagul91 17.07.2019 06:17

Это parseInt, поэтому не ожидается ли удаление десятичных знаков?

Mohit Mutha 17.07.2019 06:25
Ответ принят как подходящий

Это из-за ["$379.99", "$1,499.99"], здесь элементы в массиве содержат $, который не является числом (NaN), вызывающим ошибку.

Вместо этого,

num.push(parseInt(parse[i]));

Ты можешь это сделать,

num.push(Number(parse[i].replace(/[^0-9.]/g, "")));

Демо

Работал как шарм, большое спасибо, посмотрел на него 50 раз и полностью пропустил этот знак $.

Christian Gonzalez 17.07.2019 05:45

Другие вопросы по теме