家伙!我在将字符串数组转换为浮点数时遇到问题。如果我使用map(parseFloat),我会得到int数字。 40,78中的逗号是否有问题,这就是为什么当我使用parseFloat函数时我得到40?
这是我要转换的数组:
[["40,78","6,27","0,00",null,null,null,null,null,null,null,null,null,"35,87",null,null]];
我想把它转换成这个:
[[40.78,6.27,0.00,null,null,null,null,null,null,null,null,null,35.87,null,null]];
有人有任何想法吗?提前谢谢!
答案 0 :(得分:2)
就像你说的那样。 parseFloat()
仅将浮点数视为.
字符的字符串,而不是,
。此外,它会为NaN
值返回null
:
var arr = ["40,78","6,27","0,00",null,null,null,null,null,null,null,null,null,"35,87",null,null];
var res = arr.map(function(val) {
return val ? parseFloat(val.replace(',', '.')) : null;
});
console.log(res);
答案 1 :(得分:1)
解决方案:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.js"></script>
答案 2 :(得分:0)
var arr = ["40,78","6,27","0,00",null,null,null,null,null,null,null,null,null,"35,87",null,null];
arr.map(function(v) {
return v === null ? v : parseFloat(v.replace(",", "."));
});
在你的情况下你有一个双数组。如果您执行额外的.map
调用或以其他方式处理外部数组,则取决于您的用例。
答案 3 :(得分:0)
你有'40,78'逗号分隔的字符串,要解析浮动你需要点分隔字符串f.e:'40 .78'和map(parseFloat)才能正常工作。