How to convert a comma separated string to an array?

I have a comma separated string that I want to convert into an array, so I can loop through it.

Is there anything built-in to do this?

For e.g. I have this string

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

now I want to split this by the comma, and then store it in an array.

Answers:

Answer
var array = string.split(',');

MDN reference, mostly helpful for the possibly unexpected behavior of the limit parameter. (Hint: "a,b,c".split(",", 2) comes out to ["a", "b"], not ["a", "b,c"].)

Answer

Watch out if you are aiming at integers, like 1,2,3,4,5. If you intend to use the elements of your array as integers and not as strings after splitting the string, consider converting them into such.

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(",");

adding a loop like this

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

will return an array containing integers, and not strings.

Answer

Hmm split is dangerous imho as a string can always contain a comma, observe the following:

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

So how would you interperate that? and what do you WANT the result to be? an array with:

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

even if you escape the comma you'd have a problem.

Quickly fiddled this together:

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

Feel free to use / edit it :)

Answer

The split() method is used to split a string into an array of substrings, and returns the new array.

var array = string.split(',');
Answer

Note that the following:

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

will alert 1

Answer

Pass your comma Separated string into this function and it will return an array, and if not comma-separated string found then will return null.

 function splitTheString(CommaSepStr) {
       var ResultArray = null; 

// Check if the string is null or so.
        if (CommaSepStr!= null) {


             var SplitChars = ',';
   // Check if the string has comma of not will go to else
                if (CommaSepStr.indexOf(SplitChars) >= 0) {
                    ResultArray = CommaSepStr.split(SplitChars);

                }
             else { 
  // string has only one value, can also check the length of the string or time and cross-check too. 
                    ResultArray = [CommaSepStr]; 
              }
        }
       return ResultArray ;
    }
Answer

Return function

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

its accept string and objectstrings

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/

Answer

I know this question has been answered for quite a while, but I thought that my contribution would be beneficial to others researching this topic...

Here is a function that will convert a string to an array, even if there is only one item in the list (no separator character):

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

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

  return fullArray;
}

Use it like this:

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

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

I created this function because split throws out an error if there is no separator character in the string (only one item)

Answer

I had a similar issue, but more complex as I needed to transform a csv into an array of arrays (each line is one array element that inside has an array of items split by comma).

The easiest solution (and more secure I bet) was to use PapaParse (http://papaparse.com/) which has a "no-header" option that transform the csv into an array of arrays, plus, it automatically detected the "," as my delimiter.

Plus, it is registered in bower, so I only had to:

bower install papa-parse --save

and then use it in my code as follows:

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

I really liked it.

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

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

it will result:

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

and if you want to convert following to:

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

this:

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

use:

str = arr.join(',')
Answer

good solution for that

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

obj.map((c) => { return c. }).join(', ')
Answer

Try

str.split`,`

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

let arr = str.split`,`;

console.log(arr);

Answer

For array of strings to comma-separated string

let months = ["January","Feb"];
let monthsString = months.join(", ");
Answer

you can Try the following snippet

 var str = "How,are,you,doing,today?";
    var res = str.split(",");
    console.log("My Result:",res)
Answer

As @oportocala mentions empty string will not result in expected empty array. So to counter do

str
.split(',')
.map(entry => entry.trim())
.filter(entry => entry)

For array of expected integers do

str
.split(',')
.map(entry => parseInt(entry))
.filter(entry => typeof entry ==='number')

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.