Wil*_*ilk 36 javascript arrays string split
我不明白这种行为:
var string = 'a,b,c,d,e:10.';
var array = string.split ('.');
Run Code Online (Sandbox Code Playgroud)
我期待这个:
console.log (array); // ['a,b,c,d,e:10']
console.log (array.length); // 1
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个:
console.log (array); // ['a,b,c,d,e:10', '']
console.log (array.length); // 2
Run Code Online (Sandbox Code Playgroud)
为什么返回两个元素而不是一个?怎么样split?
还有另一种方法吗?
xda*_*azz 83
您可以添加过滤器以排除空字符串.
var string = 'a,b,c,d,e:10.';
var array = string.split ('.').filter(function(el) {return el.length != 0});
Run Code Online (Sandbox Code Playgroud)
mar*_*mor 23
一个稍微简单的@xdazz版本用于排除空字符串(使用ES6箭头功能):
var array = string.split('.').filter(x => x);
Run Code Online (Sandbox Code Playgroud)
Ing*_*ngo 20
这是正确和预期的行为.鉴于您已将分隔符包含在字符串中,split函数(简化)将分隔符左侧的部分("a,b,c,d,e:10")作为第一个元素和部分分隔符的其余部分(空字符串)作为第二个元素.
如果您对split()的工作方式非常好奇,可以访问http://www.ecma-international.org/publications/files/ECMA-ST/查看 ECMA规范(ECMA 262)的第148和149页. ECMA-262.pdf
将String.split()方法与Array.filter()方法一起使用。
var string = 'a,b,c,d,e:10.';
var array = string.split ('.').filter(item => item);
console.log(array); // [a,b,c,d,e:10]
console.log (array.length); // 1Run Code Online (Sandbox Code Playgroud)