无法在React项目中解析int持续获取NaN

时间:2019-07-17 03:34:26

标签: reactjs parseint

enter image description here 好的,所以我目前正在尝试将某个对象中的商品加在一起的价格准确。当我尝试使用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 第一个显示我的obj的 第二个节目是我在变量中提取了数字[“ $ 379.99”,“ $ 1,499.99”] 第三个实际执行parseInt函数的地方是当我得到[NaN,NaN]`

2 个答案:

答案 0 :(得分:1)

您的字符串中有一个$符号。删除标志并尝试

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

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

答案 1 :(得分:0)

这是由于["$379.99", "$1,499.99"]引起的,这里数组中的项包含$,这不是引起错误的数字(NaN)。

相反,

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

您可以这样做

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

Demo