javascript - 在减号和数字之间插入“£”以进行计算
问题描述
我有以下数组:
Array (3)
0 {_id: "5fea07cd143fd50008ae1ab2", newBalance: 1500, balanceDate: "2020-12-28T16:29:00.391Z"}
1 {_id:"5fea0837b2a0530009f3886f", newBalance: 1115, balanceDate: "2020-12-28T16:30:45.217Z"}
2 {_id: "5fec30faef904e0dd1e39c60", newBalance: 1415, balanceDate: "2020-12-30T07:49:13.214Z"}
然后我有以下函数,它映射通过这个数组并从每个数组中挑选出 newBalance。然后它取上一个值并减去当前值以计算出差值:
const diffs = debtBalance.map((item, index) =>
index === 0 ? 0 : debtBalance[index - 1].newBalance - item.newBalance
);
这将输出以下内容:
Array (3)
0 0
1 385
2 -300
然后我想要做的是在数组中的第二个条目(-300)之类的示例中,取该值并将“-”和 int 分开,然后在它们之间放置一个“£”符号。
因此,如果我记录更新后的数组,输出将如下所示:
// 0, 385, -£300
我对条件句很好,这是有效的,我可以挑选出数字,我只需要在它们之前用“-”对数字进行更改,并在它们之间添加一个“£”。
对于任何反馈,我们都表示感谢!:)
解决方案
插入 £ 符号时,您需要将数据类型从数字转换为字符串。因此,您可能希望首先将数组中的所有值映射到字符串(保持一致)。喜欢arr.map(String)
会这样做。所以这是要做的第一件事。
然后,您可以replace
在另一个映射中对每个成员执行 a:
arr.map(s => s.replace("-", "-£"))
而且,如果您希望货币符号也位于正金额字符串的前面(似乎合乎逻辑),那么与之前的替换一起进行:
arr.map(s => s.replace(/\d/, "£$&"))
这会将第一位数字替换为以货币符号为前缀的相同数字。在这里,字符串是否带有减号并不重要。
评论
在我看来,diffs
数组中的第一个 0 并不是很有用,因为它总是为零。我会忽略那个值。
所以我只会为三个数组生成两个值,如果一个值是正数,我也会在它前面加上货币符号,以保持一致:
const debtBalance = [
{ _id: "5fea07cd143fd50008ae1ab2", newBalance: 1500, balanceDate: "2020-12-28T16:29:00.391Z"},
{_id:"5fea0837b2a0530009f3886f", newBalance: 1115, balanceDate: "2020-12-28T16:30:45.217Z"},
{_id: "5fec30faef904e0dd1e39c60", newBalance: 1415, balanceDate: "2020-12-30T07:49:13.214Z"}
];
const diffs = debtBalance.slice(1).map((item, index) =>
item.newBalance - (debtBalance[index - 1]?.newBalance || 0)
).map(String).map(s => s.replace(/\d/, "£$&"));
console.log(diffs);
当然,您可以在一次map
调用中完成这 3 个操作(减法、数据类型转换、替换),但我喜欢这里的关注点分离,代价是 2 次额外的迭代。
推荐阅读
- php - 当 PHP 下拉列表中有多个同名选项时,如何仅显示一个选项?
- angular5 - 如何检测补丁值后,angular6中的表单数据是否已更改?
- javascript - 如果将函数作为“目标”参数传递,Object.assign 输出是否不同
- tensorflow - Keras - 是否有一个函数可以读出人脸图像的预测概率并为未知人脸设置阈值
- apache-kafka-streams - 循环遍历 KStream 对象并打印出它的值
- sumo - SUMO TraCI 如何找到邻近的路口?
- javascript - Express React Views - 如何手动渲染
- python - Pyplot:如何避免子图之间显示网格?
- android - Google OAuth 访问令牌过期如何获取刷新令牌
- function - 从函数内部调用函数不起作用