web-dev-qa-db-ja.com

コンマ区切りの文字列を配列に変換する

私はそれをループできるようにするために配列に変換したい、カンマ区切りの文字列があります。

これを行うための組み込みのものはありますか?

例えばこのひもがあります

var str = "January,February,March,April,May,June,July,August,September,October,November,December";

これをカンマで区切ってArrayオブジェクトに格納したい

619
Blankman
var array = string.split(',');

MDNリファレンスlimitパラメータの予想外の動作に最も役立ちます。 (ヒント:"a,b,c".split(",", 2)["a", "b"]ではなく["a", "b,c"]になります。)

1064
Matchu

1,2,3,4,5のように整数を目指しているのであれば、気を付けてください。文字列を分割した後、配列の要素を文字列としてではなく整数として使用する場合は、それらをそのように変換することを検討してください。

var str = "1,2,3,4,5,6";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");

このようなループを追加する

for (a in temp ) {
    temp[a] = parseInt(temp[a], 10); // Explicitly include base as per Álvaro's comment
}

文字列ではなく整数を含む配列を返します。

120
pop

文字列には常にコンマを含めることができるので、Hmm splitは危険です。次の点に注意してください。 

var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');

それでは、どのようにしてそれを相互運用しますか?そして結果はどうなるのでしょうか?以下の配列 

['a', 'b', 'c', 'd', 'e', 'f', 'g', '\'', '\''] or 
['a', 'b', 'c', 'd', 'e', 'f', 'g', ',']

カンマをエスケープしても問題があるでしょう。

すぐにこれをいっぱいにしました: 

(function($) {
    $.extend({
        splitAttrString: function(theStr) {
            var attrs = [];

            var RefString = function(s) {
                this.value = s;
            };
            RefString.prototype.toString = function() {
                return this.value;
            };
            RefString.prototype.charAt = String.prototype.charAt;
            var data = new RefString(theStr);

            var getBlock = function(endChr, restString) {
                var block = '';
                var currChr = '';
                while ((currChr != endChr) && (restString.value !== '')) {
                    if (/'|"/.test(currChr)) {
                        block = $.trim(block) + getBlock(currChr, restString);
                    }
                    else if (/\{/.test(currChr)) {
                        block = $.trim(block) + getBlock('}', restString);
                    }
                    else if (/\[/.test(currChr)) {
                        block = $.trim(block) + getBlock(']', restString);
                    }
                    else {
                        block += currChr;
                    }
                    currChr = restString.charAt(0);
                    restString.value = restString.value.slice(1);
                }
                return $.trim(block);
            };

            do {
                var attr = getBlock(',', data);
                attrs.Push(attr);
            }
            while (data.value !== '');
            return attrs;
        }
    });
})(jQuery);

それを使用する/編集すること自由に感じなさい:) 

28
Justme

Split()メソッドは、文字列を部分文字列の配列に分割して新しい配列を返すために使用されます。

var array = string.split(',');
23
Jakkwylde

次の点に注意してください。

 var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);

警告します1

13
user1386213

この関数にカンマ区切りの文字列を渡すと配列が返され、カンマ区切りの文字列が見つからない場合はnullが返されます。

 function SplitTheString(CommaSepStr) {
       var ResultArray = null; 

        if (CommaSepStr!= null) {
            var SplitChars = ',';
            if (CommaSepStr.indexOf(SplitChars) >= 0) {
                ResultArray = CommaSepStr.split(SplitChars);

            }
        }
       return ResultArray ;
    }
8
BJ Patel

リターン機能

var array = (new Function("return [" + str+ "];")());

文字列とオブジェクト文字列を受け付ける

var string = "0,1";

var objectstring = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}';

var stringArray = (new Function("return [" + string+ "];")());

var objectStringArray = (new Function("return [" + objectstring+ "];")());

JSFiddle https://jsfiddle.net/7ne9L4Lj/1/ /

6
Andi AR

私はこの質問にかなりの間答えられたことを知っています、しかし私は私の貢献がこのトピックを研究している他の人に有益であると思いました...

これは、リストに項目が1つしかない場合でも、文字列を配列に変換する関数です(区切り文字なし)。

function listToAray(fullString, separator) {
  var fullArray = [];

  if (fullString !== undefined) {
    if (fullString.indexOf(separator) == -1) {
      fullAray.Push(fullString);
    } else {
      fullArray = fullString.split(separator);
    }
  }

  return fullArray;
}

このように使用してください。

var myString = 'alpha,bravo,charlie,delta';
var myArray = listToArray(myString, ',');
myArray[2]; // charlie

var yourString = 'echo';
var yourArray = listToArray(yourString, ',');
yourArray[0]; // echo

この関数を作成したのは、文字列に区切り文字が含まれていないとsplitがエラーをスローするからです(1項目のみ)。

4
Kabb5

私は同様の問題を抱えていましたが、csvを配列の配列に変換する必要があるため、より複雑でした(各行は、コンマで区切られた項目の配列を持つ1つの配列要素です)。

最も簡単な(そしてもっと安全な)解決法は、capaを配列の配列に変換する "no-header"オプションを持ったPapaParse( http://papaparse.com/ /)を使うことでした。区切り文字として "、"が自動的に検出されました。

加えて、それは大胆に登録されているので、私はただしなければならなかった:

bower install papa-parse --save

そしてそれを私のコードで次のように使います。

var arrayOfArrays = Papa.parse(csvStringWithEnters), {header:false}).data;

わたしはそれが本当に気に入った。

3
Diego Pamio
let str = "January,February,March,April,May,June,July,August,September,October,November,December"

let arr = str.split(',');

結果は次のようになります。

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

そして、あなたが以下をに変換したい場合

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

この: 

"January,February,March,April,May,June,July,August,September,October,November,December";

つかいます:

str = arr.join(',')
1
Mubeen Khan

そのための良い解決策

let obj = ['A','B','C']

obj.map((c) => { return c. }).join(', ')
1
Adir Zoari