如何通过节点Js拆分string?
我的arrays:
var str=['data1,data2 '];
我用过:
var arr = str.split(",");
但是显示了一个错误。 TypeError:对象data1,data2没有方法“split”。 我怎么解决这个问题。
我的输出将是:
arr= data1,data2 // or arr[0]=data1; arr[1]=data2;
我怎么解决这个问题 ?
你应该做这个 :
var arr = str.toString().split(",");
“ TypeError:对象data1,data2没有方法'split' ”表示该variables不被视为一个string。 因此,你必须改变它。
更新08.10.2015我注意到有人认为上面的答案是一个“ 肮脏的解决方法 ”,令人惊讶的是这个评论是upvoted。 事实上,它恰恰相反 – 使用str[0].split(",")
作为3(!),其他build议是真正的“肮脏的解决方法”。 为什么? 考虑在这些情况下会发生什么情况:
var str = []; var str = ['data1,data2','data3,data4']; var str = [someVariable];
str[0].split(",")
将尽快失败,只要str
保存一个空数组,由于某种原因,不会持有一个String.prototype
或者如果str
持有多个string,会导致不满意的结果。 使用str[0].split(",")
盲目地相信str
总是会保存1个string,绝不是别的做法。 toString()
由数字,数组,对象,布尔值,date甚至函数支持; str[0].split()
具有引发错误的巨大潜力,并停止在作用域中的进一步执行,并导致整个应用程序崩溃。
如果你真的想要使用str[0].split()
那么至less要做一些最小的types检查:
var arr; if (typeof str[0] == 'string') { arr = str[0].split(',') } else { arr = []; }
如果你的起点是一个带有string
的array
。 这应该工作:
var arr = str[0].split(",");
否则,您应该有一个string作为您的代码工作的预期的起点:
var str = 'data1,data2';
如果数组中有更多元素,则需要用for循环来迭代它们。
编辑添加其他情况:
如果你在这个数组中有几个string,那么你应该更加小心,做这样的事情:
var str = ['data1,data2 ', ' data3, data4 ']; // notice these strings have many spaces in different places var longString = str.join(','); var array = longString.split(',').map(s => s.trim()).filter(Boolean); // removing spaces from start and end of strings, and eventually removing empty positions console.log(array);
正如你所说, str
是一个数组(有一个元素)。 如果要拆分数组中包含的string,则必须先访问数组:
var arr = str[0].split(",");
假设我们有两个date:
date1:17/01/1989
date2:20/02/2000
如果我们想比较他们只是分割string,并像这样比较
var date1= date1.toString().split("/"); var date2= date2.toString().split("/"); var a = parseInt(date1[2] + date1[1] + date1[0]); var b = parseInt(date2[2] + date2[1] + date2[0]);
如果(a <b){
警报(“date2大于date1”)}
} else if(a> b){
警报(“date1大于date2”)
} else {
警报(“date1和date2是等于”);
}