How to convert comma separated string into numeric array in javascript

后端 未结 9 1773
粉色の甜心
粉色の甜心 2021-02-05 02:06

I have a one-dimensional array of integer in JavaScript that I\'d like to add data from comma separated string, Is there a simple way to do this?

e.g : var strVale

相关标签:
9条回答
  • 2021-02-05 02:51

    Solution:

    var answerInt = [];
    var answerString = "1,2,3,4";
    answerString.split(',').forEach(function (item) {
       answerInt.push(parseInt(item))
    });
    
    0 讨论(0)
  • 2021-02-05 02:52

    You can use split() to get string array from comma separated string. If you iterate and perform mathematical operation on element of string array then that element will be treated as number by run-time cast but still you have string array. To convert comma separated string int array see the edit.

    arr = strVale.split(',');
    

    Live Demo

    var strVale = "130,235,342,124";
    arr = strVale.split(',');
    for(i=0; i < arr.length; i++)
        console.log(arr[i] + " * 2 = " + (arr[i])*2);
    

    Output

    130 * 2 = 260
    235 * 2 = 470
    342 * 2 = 684
    124 * 2 = 248
    

    Edit, Comma separated string to int Array In the above example the string are casted to numbers in expression but to get the int array from string array you need to convert it to number.

    var strVale = "130,235,342,124";
    var strArr = strVale.split(',');
    var intArr = [];
    for(i=0; i < strArr.length; i++)
       intArr.push(parseInt(strArr[i]));
    
    0 讨论(0)
  • 2021-02-05 02:53

    This is an easy and quick solution when the string value is proper with the comma(,).

    But if the string is with the last character with the comma, Which makes a blank array element, and this is also removed extra spaces around it.

    "123,234,345,"

    So I suggest using push()

    var arr = [], str="123,234,345,"
    str.split(",").map(function(item){
        if(item.trim()!=''){arr.push(item.trim())}
    })
    
    0 讨论(0)
  • 2021-02-05 02:54

    You can split and convert like

     var strVale = "130,235,342,124 ";
     var intValArray=strVale.split(',');
     for(var i=0;i<intValArray.length;i++{
         intValArray[i]=parseInt(intValArray[i]);
    }
    

    Now you can use intValArray in you logic.

    0 讨论(0)
  • 2021-02-05 02:55

    You can use the String split method to get the single numbers as an array of strings. Then convert them to numbers with the unary plus operator, the Number function or parseInt, and add them to your array:

    var arr = [1,2,3],
        strVale = "130,235,342,124 ";
    var strings = strVale.split(",");
    for (var i=0; i<strVale.length; i++)
        arr.push( + strings[i] );
    

    Or, in one step, using Array map to convert them and applying them to one single push:

    arr.push.apply(arr, strVale.split(",").map(Number));
    
    0 讨论(0)
  • 2021-02-05 02:55

    All of the given answers so far create a possibly unexpected result for a string like ",1,0,-1,, ,,2":

    ",1,0,-1,,  ,,2".split(",").map(Number).filter(x => !isNaN(x))
    // [0, 1, 0, -1, 0, 0, 0, 2]
    

    To solve this, I've come up with the following fix:

    ",1,0,-1,,  ,,2".split(',').filter(x => x.trim() !== "").map(Number).filter(x => !isNaN(x))
    // [1, 0, -1, 2]
    

    Please note that due to

    isNaN("") // false!
    

    and

    isNaN(" ") // false
    

    we cannot combine both filter steps.

    0 讨论(0)
提交回复
热议问题