Если я используюSplit пустая строка должна возвращать пустой массив
''.split(',')
я ['']
вместо пустого массива []
.
Как я могу убедиться, что пустая строка всегда возвращает мне пустой массив?
Если я используюSplit пустая строка должна возвращать пустой массив
''.split(',')
я ['']
вместо пустого массива []
.
Как я могу убедиться, что пустая строка всегда возвращает мне пустой массив?
Вы можете использовать splice()
''.split(',').splice()
//[]
этот пример работает для вашей проблемы:
function returnArr(str){
return !str ? [] : str.split(',')
}
returnArr('1,2,3')
// ['1','2','3']
returnArr('')
//[]
Но я все еще хочу '' p, q, r'.split (','). Splice() 'разбивать на массив из 3-х элементов – mortensen
Если бы у вас действительно была непустая строка, это кажется особым случаем, с которым легче справляться, просто проверяя пустую строку. –
@mortensen я отредактировал свой ответ. –
попробовать с этим
r=s?s.split(','):[];
Я думаю, вы хотите, чтобы последний '' 'был пустым массивом. –
У меня не было времени, чтобы прочитать вопрос. – user2314737
Тогда как у вас было время ответить на него? –
раскола() всегда пытаются разделить на части, так вы можете попробовать:
l='';
list=(l=='')?[]:l.split(',');
всегда работает для
l='p,q,r';
list=(l=='')?[]:l.split(',');
Также вы можете написать новый раскол метод, как:
String.prototype.split2 = function (ch) {
return (this=='')?[]:this.split(ch)
}
Так доу можно попробовать:
''.split2(','); //result: []
'p,q,r'.split2(','); //result: ['p','q','r']
Я думаю, это должно сделать это ;
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' и нарушить совместимость? Если вы разделите непустую строку на '', '', вы получите массив с исходной строкой в нем, как здесь. –