2013-04-26 108 views
6

的最後一部分,我需要得到的JavaScript當前URI的最後一部分,像獲取URI

www.example.com/apple/beer/cucumber

它應該返回

黃瓜

www.example.com/apple/beer/

它應該返回

啤酒

我想出了下面的代碼:

var url = window.location.pathname; 
var urlsplit = url.split("/"); 
var action = urlsplit[urlsplit.length-1]; 

可以這樣做嗎她的改進? 如果不是,這篇文章可能會幫助其他人試圖找到同樣問題的解決方案。

解決方案

感謝所有,這似乎是最短的(希望最好)的解決方案:

var action = window.location.pathname.split("/").slice(-1)[0]; 
+0

這是不是被標記爲重複的問題的副本。這是一個更具體的要求,也是一個合理的要求(我自己只是需要它 - 讓道路是一回事,讓最後一部分是另一回事)。 – acdcjunior 2017-07-28 21:52:29

回答

7

這是一個有點短,但您的解決方案肯定是正確的。

var url = window.location.pathname; 
var urlsplit = url.split("/").slice(-1)[0]; 

或者,如PSR說,你可以使用substr:

var url = window.location.pathname; 
url.substr(url.lastIndexOf('/') + 1); 
+0

看到我更新我的回答 – PSR 2013-04-26 13:37:46

+1

你更新我的:) – 2013-04-26 13:38:26

+1

對不起搞錯了我更新你的代碼。請更正您的代碼 – PSR 2013-04-26 13:39:26

1

您可以使用

url.substr(url.lastIndexOf('/') + 1) 
+0

是不是隻會返回最後一個字符? – Gareth 2013-04-26 13:36:43

+0

@Gareth Nope,'substr'返回一系列字符。在這種情況下,只有起始點被提供,所以它從那裏返回子字符串到結尾 – Ian 2013-04-26 13:46:59

+1

@ Ian Right,但是當我離開這個註釋時,答案是'url.slice(-1)' - 那時是忍者 - 在5分鐘的寬限期內編輯,在告訴你編輯的每個人之前,SO給你;) – Gareth 2013-04-26 14:33:48

-1

location.pathname.match(/([^\/]+)$/)[1]

這實質上說採取AREN的所有字符從路徑盡頭的斜線,並返回該序列。

9

遺憾的是沒有一個答案迄今在網址尾/喜歡你的www.example.com/apple/beer/例如工作。
這裏有一個解決方案,也能在這種情況下:

window.location.pathname.split('/').filter(function(el){ return !!el; }).pop(); 

的jsfiddle測試用例: http://jsfiddle.net/EMK6t/

+0

是的,你是對的。我會'如果最後一個字符是斜線,刪除它',但該片斷肯定會更好。 – keeri 2013-04-28 17:28:33

+0

完美。看起來幾乎沒有人會考慮以斜線結尾的URL。好的片段! – 2016-05-17 13:53:16

+0

真棒....... :) – 2017-08-16 18:45:34