如何在不将空值输出到输出数组的情况下拆分字符串

sre*_*moh 4 javascript arrays string url node.js

我使用split函数来分割我的字符串/value/1

var value = "/value/1/";

var arr = value.split("/");
Run Code Online (Sandbox Code Playgroud)

结果我将获得一个包含4个元素"","值","1",""的数组; 但我真的需要输出数组中的非空值.有没有办法在我的输入字符串上生成数组,但是没有空格元素的数组?

我的字符串可能/value/1/ /value/1 /value/ /value基本上是我进行的http request.url.

Lou*_*kad 10

尝试使用Array#filter.

var arr = value.split("/").filter(function (part) { return !!part; });
Run Code Online (Sandbox Code Playgroud)

或者与Tushar建议的相同的短版本.

var arr = value.split("/").filter(Boolean);
Run Code Online (Sandbox Code Playgroud)

  • 如果你想这样做,那么使用`value.split('/').filter(Boolean);` (2认同)

Tus*_*har 6

你可以使用match正则表达式.

str.match(/[^\/]+/g);
Run Code Online (Sandbox Code Playgroud)

正则表达式[^\/]+将匹配任何非正斜杠的字符.

function getValues(str) {
  return str.match(/[^\/]+/g);
}

document.write('<pre>');
document.write('<b>/value/1/</b><br />' + JSON.stringify(getValues('/value/1/'), 0, 4));
document.write('<br /><br /><b>/value/1</b><br />' + JSON.stringify(getValues('/value/1'), 0, 4));
document.write('<br /><br /><b>/value/</b><br />' + JSON.stringify(getValues('/value/'), 0, 4));
document.write('<br /><br /><b>/value</b><br />' + JSON.stringify(getValues('/value'), 0, 4));
document.write('</pre>');
Run Code Online (Sandbox Code Playgroud)