好的,所以我目前正在尝试将某个对象中的商品加在一起的价格准确。当我尝试使用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]`
答案 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, "")));