私は以下の文字列を持っています -
var a = "1,2,3,4";
私がする時 -
var b = a.split(',');
私b
は["1", "2", "3", "4"]
b
として取得するために何かでき[1, 2, 3, 4]
ますか?
私は以下の文字列を持っています -
var a = "1,2,3,4";
私がする時 -
var b = a.split(',');
私b
は["1", "2", "3", "4"]
b
として取得するために何かでき[1, 2, 3, 4]
ますか?
を使用Array.map
して、各要素を数値に変換できます。
var a = "1,2,3,4";
var b = a.split(',').map(function(item) {
return parseInt(item, 10);
});
ドキュメントを確認する
または、ユーザーが指摘したように、よりエレガントに: thg435
var b = a.split(',').map(Number);
Number()
残りはどこにしますか:ここをチェックしてください
注:をサポートしていない古いブラウザーmap
の場合は、次のように自分で実装を追加できます。
Array.prototype.map = Array.prototype.map || function(_x) {
for(var o=[], i=0; i<this.length; i++) {
o[i] = _x(this[i]);
}
return o;
};
ゴルファーのための私の 2 セント:
b="1,2,3,4".split`,`.map(x=>+x)
バッククォートは文字列リテラルであるため、括弧を省略できますが (分割関数の性質のため)、それは と同等split(',')
です。文字列は配列になりました。文字列の整数を返す関数を使用して各値をマップする必要があるため、 (関数x=>+x
よりもさらに短い(6 文字ではなく 5 文字)) は次のようになります。Number
function(x){return parseInt(x,10)}// version from techfoobar
(x)=>{return parseInt(x)} // lambda are shorter and parseInt default is 10
(x)=>{return +x} // diff. with parseInt in SO but + is better in this case
x=>+x // no multiple args, just 1 function call
もう少し明確になることを願っています。
それを整数にマップします。
a.split(',').map(function(i){
return parseInt(i, 10);
})
map
すべての配列項目を見て、それを提供された関数に渡し、その関数の戻り値を持つ配列を返します。古いブラウザでは利用できませんが、 jQueryやアンダースコアmap
などのほとんどのライブラリにはクロスブラウザ バージョンが含まれています。
または、ループを使用する場合:
var res = a.split(",");
for (var i=0; i<res.length; i++)
{
res[i] = parseInt(res[i], 10);
}
より短い解決策:引数をマップしてに渡しますNumber
:
var a = "1,2,3,4";
var b = a.split(',');
console.log(b);
var c = b.map(Number);
console.log(c);
+string
文字列を数値に変更しようとします。次に、Array.map
関数を使用してすべての要素を変更します。
"1,2,3,4".split(',').map(function(el){ return +el;});
バリアントとして、lodash ライブラリ_.map
の組み合わせと_.ary
メソッドを使用できます。変換全体がよりコンパクトになります。公式ドキュメントの例を次に示します。
_.map(['6', '8', '10'], _.ary(parseInt, 1));
// → [6, 8, 10]