如果我使用
''.split(',')
我收到的是一个空字符串['']
,而不是一个空数组[]
。
如何确保一个空字符串总是返回一个空数组?
''.split(',')
我收到的是一个空字符串['']
,而不是一个空数组[]
。
如何确保一个空字符串总是返回一个空数组?
在调用split之前,只需简单地检查字符串是否为假值:
function returnArr(str){
return !str ? [] : str.split(',')
}
returnArr('1,2,3')
// ['1','2','3']
returnArr('')
//[]
'p,q,r'.split(',').splice()
拆分成一个由3个元素组成的数组。 - mortensen'p,q,r'.split(',').splice()
将返回一个空数组[]
。 - Vibhuconst arr = ''.split(',').filter(Boolean);
console.log('result:', arr)
尝试使用这个
r=s?s.split(','):[];
s
是一个空数组。 - Dave Newton我想这应该可以做到;
console.log(''.split(',').reduce((p,c) => c ? p.concat(c) : p ,[]));
console.log("test1,test2,".split(',').reduce((p,c) => c ? p.concat(c) : p ,[]));
使用条件运算符 ? exprIfTrue : exprIfFalse
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_operator
let text1 = ''
let text2 = '1,2,3,4,5,6,7,8'
console.log(text1 == '' ? [] : text1.split(','));
console.log(text2 == '' ? [] : text2.split(','));
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']
split
替换并破坏兼容性吗?如果你在非空字符串上使用','
进行分割,就会得到一个包含原始字符串的数组,就像这里一样。 - Dave Newton