253

私は以下の文字列を持っています -

var a = "1,2,3,4";

私がする時 -

var b = a.split(',');

b["1", "2", "3", "4"]

bとして取得するために何かでき[1, 2, 3, 4]ますか?

4

17 に答える 17

485

を使用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;
};
于 2013-03-28T09:10:22.470 に答える
109

ゴルファーのための私の 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

もう少し明確になることを願っています。

于 2020-02-06T14:03:18.957 に答える
19

それを整数にマップします。

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);
}
于 2013-03-28T09:10:43.963 に答える
16

より短い解決策:引数をマップしてに渡しますNumber

var a = "1,2,3,4";
var b = a.split(',');
console.log(b);
var c = b.map(Number);
console.log(c);

于 2016-06-17T19:20:02.807 に答える
16

+string文字列を数値に変更しようとします。次に、Array.map関数を使用してすべての要素を変更します。

"1,2,3,4".split(',').map(function(el){ return +el;});
于 2013-03-28T09:10:43.190 に答える
4

バリアントとして、lodash ライブラリ_.mapの組み合わせと_.aryメソッドを使用できます。変換全体がよりコンパクトになります。公式ドキュメントの例を次に示します。

_.map(['6', '8', '10'], _.ary(parseInt, 1));
// → [6, 8, 10]
于 2015-06-04T12:57:49.237 に答える