gpt4 book ai didi

javascript - 为什么我的普通 JS 循环不将值相加来填充新对象?

转载 作者:行者123 更新时间:2023-11-28 16:54:42 24 4
gpt4 key购买 nike

我有一个对象,其中包含约 130 个对象的数组,该数组又具有一个名为 orderProfit字段
我现在尝试创建一个新对象并用 orderProfit 的(时间顺序)总和填充它。

输入(示例数字):

[{
"trades": [
{
"fields": {
"orderProfit": "100.000,00",
[...]

},
},

{
"fields": {
"orderProfit": "-500,00",
[...]
}
},
{
"fields": {
"orderProfit": "1.500,00",
[...]
}
},

[...]

}]

enter image description here

所需的数组输出:

balanceByTrades = [100.000, 99.500, 101.000, ..., ]

当前尝试:

var balanceByTrades = [];
for (var i = 0; i < trades.length; i++) {
trades[i].fields.orderProfit = parseFloat(trades[i].fields.orderProfit);
// typeof returns number

if (i == 0) {
balanceByTrades[i] = trades[i].fields.orderProfit
} else {
balanceByTrades[i] = trades[i].fields.orderProfit + trades[i-1].fields.orderProfit
}
}

哪些输出

balanceByTrades = [100.000,00, -500,00, 1.500,00]

那么为什么它没有相加呢?

最佳答案

当需要将字符串解析为数字时,不要使用千位分隔符,而要表示小数值,请使用小数点

删除所有 .,然后将 , 替换为 .:

const arr = [{
"fields": {
"orderProfit": "100.000,00",

}
}, {

"fields": {
"orderProfit": "-500,00",
}
}, {

"fields": {
"orderProfit": "1.500,00",
}
}];

const orderProfits = arr.map(({ fields }) => fields.orderProfit);
let currentBalance = 0;
const balanceByTrades = orderProfits.map((profitStr) => {
const num = Number(
profitStr.replace(/\./g, '').replace(',', '.')
);
currentBalance += num;
return currentBalance;
});
console.log(balanceByTrades);

关于javascript - 为什么我的普通 JS 循环不将值相加来填充新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com