【问题标题】:AngularJS convert array of strings into array of floatAngularJS将字符串数组转换为浮点数组
【发布时间】:2016-08-25 13:02:00
【问题描述】:

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

有人知道吗?提前致谢!

【问题讨论】:

  • 但是,如果你这样做并且当你检查数组长度时,它只会返回1

标签: javascript html angularjs arrays floating-point


【解决方案1】:

如你所说。 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);

【讨论】:

    【解决方案2】:

    解决办法:

    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/

    【讨论】:

      【解决方案3】:
      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 调用或以其他方式处理外部数组,则取决于您的用例。

      【讨论】:

        【解决方案4】:

        您有 '40,78' 逗号分隔的字符串,要解析为浮点数,您需要使用点分隔的字符串 f.e: '40.78' 和 map(parseFloat) 才能正常工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-21
          • 1970-01-01
          • 1970-01-01
          • 2021-12-28
          • 2015-03-20
          • 2011-07-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多