javascript - 在 JavaScript 中解析数字中的字母的函数
问题描述
我正在尝试构建一个价格转换器,它使用解析器,因为数字的格式可以不同。
假设我有一个这样的数组:
const prices = ["1300", "0.232", "12k2", "123.45", "14923", "1k2", "2k20", "1k300", "12k320", "8k23" ];
现在我为此做了一个函数,将它们变成这样的浮点数:
const makePriceFromString = (str) => {
let _price = str.toLowerCase();
if (_price.contains("k")) {
_price = _price.replace("k", "");
_price += "00";
}
return parseFloat(_price);
}
然后我像这样遍历它们:
const result = prices.map(price => makePriceFromString(price));
/*
[
1300.00,
0.232,
12200.00,
123.45,
14923.00,
1200.00,
22000.00, <- Should be 2200.00
130000.00, <- Should be 1300.00
1232000.00, <- Should be 12320.00
82300.00 <- Should be 8230.00
]
如您所见,最后两个价格失败了,因为“k”后面有多个数字。我坚持如何让我的功能解决这个问题
解决方案
您可以'k'
用点替换 并乘以1000
。这对于像这样的值更有效
string your app. rpl. with dot
1k2 1200 1200
1k20 12000 1200
因为'k'
不是在末尾添加一些零的位置。
const
prices = ["1300", "0.232", "12k2", "123.45", "14923", "1k2", "1k20"],
numbers = prices.map(s => s.includes('k') ? s.replace('k', '.') * 1000 : +s);
console.log(...numbers);
推荐阅读
- python - Python subprocess.Popen 带有变量设置
- linux - 如何从服务器 SCP 选定的文件
- r - 使用 ggplot2 + linerange() 根据单独的列向每一行添加点
- facebook - Facebook Graph API - 组 - 空数据
- json - 有效加载 8gb 腌制文件
- node.js - expressjs不在浏览器上呈现计算的html字符串
- javascript - 如何按类捕获元素并单击它?
- python - 在 Django Rest Framework 视图中映射 1 - many 关系
- python - 使用 Python(html2text,textile)将 HTML 转换为 Ascii 并返回的问题
- python - 使用 sklearn.cluster Kmeans 时出现内存错误