AngularJS将字符串数组转换为浮点数组

AngularJS convert array of strings into array of float

本文关键字:数组 转换 字符串 AngularJS      更新时间:2023-09-26

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

有人知道吗?提前感谢!

正如您所说。parseFloat()只考虑具有.字符的字符串作为浮点数,而不考虑,。对于null值,它还返回NaN

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);

解决方案:

function MyCtrl($scope) {
    $scope.array= ["40,78","6,27","0,00",null,null,null,null,null,null,null,null,null,"35,87",null,null]
    for(var i=0; i<$scope.array.length; i++) {
      if ($scope.array[i] !== null) {
            $scope.array[i] = parseFloat($scope.array[i].replace(',','.'))
      }
    }
}

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

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调用或以其他方式处理外部数组的用例。

您有'40,78'逗号分隔的字符串,要解析为浮点,您需要有点分隔的字符串。例如:'40.78'和map(parseFloat(才能正常工作。