我的数组:
var str=['data1,data2 '];
我已经使用过:
var arr = str.split(",");
但是出现了一个错误。TypeError: 对象data1,data2没有split方法。我该如何解决这个问题。
我的输出将是:
arr= data1,data2
// or
arr[0]=data1;
arr[1]=data2;
我该如何解决这个问题?
我的数组:
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: Object data1,data2 has no method 'split'" 表示该变量被视为非字符串。因此,您必须进行类型转换。var str = [];
var str = ['data1,data2','data3,data4'];
var str = [someVariable];
str[0].split(",")
会完全失败,如果str
保存了一个空数组,或者不是一个String.prototype
,或者str
保存了多个字符串的话,将无法给出令人满意的结果。盲目地使用str[0].split(",")
并信任str
总是恰好保持1个字符串而永远不会有其他内容是不好的实践方式。 toString()
方法支持数字、数组、对象、布尔值、日期,甚至函数;而str[0].split()
存在巨大的潜在错误风险,并可能导致代码执行中断和应用程序崩溃。
如果你真的非常想使用str[0].split()
,那么至少进行一些最小的类型检查:
var arr;
if (typeof str[0] == 'string') {
arr = str[0].split(',')
} else {
arr = [];
}
var arr = str[0].split(",");
var str = 'data1,data2';
如果您的数组中有更多元素,您需要使用for循环迭代它们。
如果您在该数组中有多个字符串,则应更加小心,并执行以下操作:
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);
Array.toString()
是一个“脏的解决办法”。实际上,这是一种安全可靠的方法。我认为 str[0].split(",")
有可能会导致整个应用程序崩溃,这是非常明显的。我已经更新了我的回答来解释其中的原因。 - davidkonrad正如您所说,str
是一个数组(只有一个元素)。如果您想分割包含在数组中的字符串,您首先需要访问该数组:
var arr = str[0].split(",");
假设我们有两个日期:
日期1:17/01/1989
日期2:20/02/2000
如果我们想要比较它们,只需将字符串分割并像这样进行比较
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){
alert("date2 大于 date1")}
} else if(a > b){
alert("date1 大于 date2")
} else{
alert("date 1 和 date2 相等");
}
.toString()
实现始终使用,
作为其自己的分隔符。这并非铁板钉钉。如果将来某个浏览器决定改用换行符怎么办? - Shadow The Spring Wizard['data1,data2','data3,data4'] .toString()
将返回'data1,data2,data3,data4'
- 我认为这并不是一定的。最好的方法是自己连接它,即['data1,data2','data3,data4'].join(',')
。 - Shadow The Spring Wizardstr = ['data1,data2','data3,data4']
- 你说得完全正确!我们不能确定浏览器或者在这种情况下的V8将来是否会返回data1,data2,data3,data4
。 - davidkonrad