AngularJS将字符串数组转换为float数组

时间:2016-08-25 13:02:00

标签: javascript html angularjs arrays floating-point

家伙!我在将字符串数组转换为浮点数时遇到问题。如果我使用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]];

有人有任何想法吗?提前谢谢!

4 个答案:

答案 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>

链接:http://jsfiddle.net/p2kpeptq/1/

答案 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)才能正常工作。