Итак, в настоящее время я пытаюсь добавить предметы из объекта вместе с ценами, чтобы быть точным. Когда я пытаюсь разобрать элементы с помощью 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]`





В вашей строке есть знак $. Убери знак и попробуй
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 Работает без каких-либо изменений. Обновленный ответ с предлагаемым значением
Это удаление .05 из значения.
Это parseInt, поэтому не ожидается ли удаление десятичных знаков?
Это из-за ["$379.99", "$1,499.99"], здесь элементы в массиве содержат $, который не является числом (NaN), вызывающим ошибку.
Вместо этого,
num.push(parseInt(parse[i]));
Ты можешь это сделать,
num.push(Number(parse[i].replace(/[^0-9.]/g, "")));
Работал как шарм, большое спасибо, посмотрел на него 50 раз и полностью пропустил этот знак $.
Это, вероятно, не работает, потому что у вас есть знак доллара впереди и разделители запятой для вашего значения. Попробуйте убрать запятые, должно получиться.