无法在 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, "")));
我尝试在 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, "")));