2016-08-25 4 views
0

남자! 문자열 배열을 실수로 변환하는 데 문제가 있습니다. map (parseFloat)을 사용하면 int 숫자를 얻습니다. 40,78의 쉼표에 문제가 있습니까? 그래서 parseFloat 함수를 사용할 때 40을 얻습니다. 나는이로 변환 할AngularJS는 문자열 배열을 float 배열로 변환합니다.

[["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

그러나, 당신이 그렇게하고 배열의 길이를 확인할 때, 그것은 1''에만 반환됩니다. –

답변

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 호출을 수행하거나 다른 방법으로 외부 배열을 처리하는 경우 유스 케이스에 따라 다릅니다.

2

당신이 말하는 것과 같습니다. parseFloat(). 문자가있는 문자열 만 부동 소수점 숫자로 간주하지만 ,이 아닙니다.

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

0
당신은 '40이

, 78 '는 점을 가질 필요가 떠 구문 분석, 문자열을 쉼표로 구분 된 문자열 FE 구분 : '40 .78'와지도를 또한 그것은 NaNnull에 대한 값을 반환 (parseFloat) 제대로 작동합니다.

1

솔루션 :

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/

관련 문제