如何拆分URL以获取javascript中的url路径

nCo*_*ore 9 javascript

我已经构建了一个指向不同主机名的url路径,www.mysite.com例如

var myMainSite = 'www.mymainsite.com' + '/somepath';
Run Code Online (Sandbox Code Playgroud)

所以这相当于www.mymainsite.com/path/path/needthispath/somepath.

我现在怎么做就像下面的代码一样,这给了我一大堆console.log中url的索引.

var splitUrl = myMainSite.split('/');
Run Code Online (Sandbox Code Playgroud)

console.log看起来像:

0: http://
1: www.
2: mysite.com
3: path
4: path
5: needthispath
6: somepath
Run Code Online (Sandbox Code Playgroud)

我把它们连接起来splitUrl[5]+'/'+splitUrl[6],它看起来并不漂亮.

所以我的问题是如何拆分/删除url位置http://www.mymainsite.com/以获取needthispath/somepathjs中的url路径?这样做有更快更清洁的方法吗?

Ina*_*mus 14

第一个解决方案(URL对象)

URL接口表示提供用于创建对象URL的静态方法的对象.

new URL(url)对象也可用于(parse, construct, normalise, encode URLs)等.

你可以像这样使用它.

var url = 'http://www.mymainsite.com/somepath/path2/path3/path4';

var pathname = new URL(url).pathname;

console.log(pathname);
Run Code Online (Sandbox Code Playgroud)


第二种解决方案(一种黑客攻击)

var urlHack = document.createElement('a');
urlHack.href = 'http://www.mymainsite.com/somepath/path2/path3/path4';

console.log(urlHack.pathname);

// you can even call this object with these properties:
// protocol, host, hostname, port, pathname, hash, search, origin
Run Code Online (Sandbox Code Playgroud)


小智 9

为什么不使用 split 功能并从那里开始工作。拆分功能将完全拆分您的 URL,从那里您只需要查找倒数第二个和最后一个项目。

下面是一个例子:

var initial_url = 'http://www.mymainsite.com/path/path/needthispath/somepath';
var url = initial_url .split( '/' );

var updated_url= document.location.hostname + '/' + url[ url.length - 2 ] + '/' + url[ url.length - 1 ];
Run Code Online (Sandbox Code Playgroud)