【发布时间】:2021-07-21 00:27:06
【问题描述】:
如果我使用
''.split(',')
我得到 [''] 而不是空数组 []。
如何确保空字符串总是返回一个空数组?
【问题讨论】:
-
写你自己的
split替换并破坏兼容性?如果你在','上拆分一个非空字符串,你会得到一个包含原始字符串的数组,就像这里一样。
标签: javascript arrays
如果我使用
''.split(',')
我得到 [''] 而不是空数组 []。
如何确保空字符串总是返回一个空数组?
【问题讨论】:
split替换并破坏兼容性?如果你在',' 上拆分一个非空字符串,你会得到一个包含原始字符串的数组,就像这里一样。
标签: javascript arrays
在调用 split 之前,只需简单检查一下字符串是否为假:
function returnArr(str){
return !str ? [] : str.split(',')
}
returnArr('1,2,3')
// ['1','2','3']
returnArr('')
//[]
【讨论】:
'p,q,r'.split(',').splice() 拆分为一个包含 3 个元素的数组
'p,q,r'.split(',').splice() 将返回一个空数组[]。
试试这个
r=s?s.split(','):[];
【讨论】:
s 是一个空数组。
我想应该这样做;
console.log(''.split(',').reduce((p,c) => c ? p.concat(c) : p ,[]));
console.log("test1,test2,".split(',').reduce((p,c) => c ? p.concat(c) : p ,[]));
【讨论】:
split() 总是分成几块(至少一个),所以你可以试试:
list=(!l)?[]:l.split(',');
您还可以编写一个新的拆分方法,例如:
String.prototype.split2 = function (ch) {
return (!this)?[]:this.split(ch)
}
所以你可以试试:
''.split2(','); //result: []
'p,q,r'.split2(','); //result: ['p','q','r']
【讨论】: