2016-08-25 11 views
0

人!私は文字列を浮動小数点に変換する際に問題があります。私はマップ(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 0.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/

関連する問題