无法在 React 项目中的 parseInt 不断得到 NaN

cannot parseInt in React project keep getting 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.log(array);
        for (let i = 0; i < array.length; i++) {
            parse.push(array[i].price);
        }
        console.log(parse);
        for (let i = 0; i < parse.length; i++) {
            num.push(parseInt(parse[i]));
        }
        console.log(num);
        let sum = num.reduce((acc, val) => {
            return acc + val;
        }, 0);
        console.log(sum);
    }
    render() {
        const { cart } = this.props.itemReducer;
                this.add(cart);

我确实有一些console.log的 第一个确实显示了我的对象 第二个节目是我在变量 ["$379.99", "$1,499.99"] 中提取了我的数字 第三个我实际执行 parseInt 函数的地方是当我得到 [NaN, NaN]`

您的字符串中有一个 $ 符号。去掉标志试试

let nanNum = parseInt("77")
console.log(nanNum) //This will print NaN

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

这是因为 ["9.99", ",499.99"],此处数组中的项目包含 $,它不是导致错误的数字 (NaN)。

而不是这个,

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

你可以做到,

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

Demo