Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
170
rated 0 times [  177] [ 7]  / answers: 1 / hits: 38240  / 11 Years ago, mon, february 3, 2014, 12:00:00

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 ?


More From » node.js

 Answers
18

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 = [];
}

[#72752] Sunday, February 2, 2014, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
margaritakristinak

Total Points: 502
Total Questions: 127
Total Answers: 98

Location: England
Member since Mon, May 17, 2021
3 Years ago
;