How to split a string by Node Js?

javascript, node.js, split

Solution

You should do this :

var arr = str.toString().split(",");

"TypeError: Object data1,data2 has no method 'split'" indicates the variable is not considered as a string. Therefore, you must typecast it.

update 08.10.2015 I have noticed someone think the above answer is a "dirty workaround" and surprisingly this comment is upvoted. In fact it is the exact opposite - using `str[0].split(",")` as 3 (!) other suggests is the real "dirty workaround". Why? Consider what would happen in these cases :

var str = [];
var str = ['data1,data2','data3,data4'];
var str = [someVariable]; 

`str[0].split(",")` will fail utterly as soon `str` holds an empty array, for some reason not is holding a `String.prototype` or will give an unsatisfactory result if `str` holds more than one string. Using `str[0].split(",")` blindly trusting that `str` always will hold 1 string exactly and never something else is bad practice. `toString()` is supported by numbers, arrays, objects, booleans, dates and even functions; `str[0].split()` has a huge potential of raising errors and stop further execution in the scope, and by that crashing the entire application.

If you really, really want to use `str[0].split()` then at least do some minimal type checking :

var arr;
if (typeof str[0] == 'string') {
    arr = str[0].split(',')
} else {
    arr = [];
}

Problem

My array: ``` var str=['data1,data2 ']; ``` I have used: ``` var arr = str.split(","); ``` But one error is showed. TypeError: Object data1,data2 has no method 'split'. How can I solve this problem. My output will be: ``` arr= data1,data2 // or arr[0]=data1; arr[1]=data2; ``` How can I solve this problem ?

Original source