Mike Vierwind
Mike Vierwind

Reputation: 1520

Get parts of URL after domain name //... by splitting URL into array

I have make this code:

var newURL = $(".list-portfolio a").attr("href"),
    pathArray = newURL.split( '/' ),
    secondLevelLocation = pathArray[0];
console.log(pathArray);

    var pathArray = pathArray[3, 4];

The pathArray value is ["http:", "", "www.mikevierwind.nl", "portfolio", "ruimzicht.html"]

How can i get the last 2 items of this array. I want that the results is portfolio/ruimzicht.html.

Upvotes: 20

Views: 30872

Answers (7)

Sean Lin
Sean Lin

Reputation: 77

location.href.substr(location.href.indexOf(location.host)+location.host.length)

try this! it's contains URL parameters

Upvotes: 2

Kamil Kiełczewski
Kamil Kiełczewski

Reputation: 92407

Short

Ninjagecko gives excelent answer - I improve it a little: you don't need use window prefix, just

location.pathname

And some alternative way to get two last array items by use at()

[ pathArray.at(-2), pathArray.at(-1) ] 

pathArray = ["http:", "", "www.mikevierwind.nl", "portfolio", "ruimzicht.html"];

result = [ pathArray.at(-2), pathArray.at(-1) ]

console.log(result.join`/`);

Upvotes: 0

robby dwi hartanto
robby dwi hartanto

Reputation: 435

try this

console.log(new URL(document.URL));

you would get object of URL

Upvotes: 1

ninjagecko
ninjagecko

Reputation: 91092

You don't need any of this, you just want window.location.pathname:

> window.location.pathname
"/questions/11898626/get-items-of-the-array/11898963"

This will let you in the future have directories like "portfolio/2012/ruimzicht.html", and change domains to say "www.mikevierwind.???" without changing your code.


If you are not currently on the domain (and can't do the above), you can do it your way with a one-liner:

> pathArray.slice(-2).join('/')
"portfolio/ruimzicht.html"

But this is not future-proof like the above. To make it future-proof, you can do:

> url.split(document.domain)[1].slice(1)
"portfolio/2012/ruimzicht.html"

One would do this generally on foreign URLs when you are not currently on the domain and thus can't do window.location.pathname.

Upvotes: 56

jmventar
jmventar

Reputation: 697

You could use array length if you don't have a fixed size or number of elements.

var path = array[array.length-2]+'/'+array[array.length-1];

If you just want the path use plain JS or jQuery as they suggest you in comments.

//Plain JS
var path = window.location.pathname;
//jQuery
$(location).attr('pathname'); 

Upvotes: 1

Nick
Nick

Reputation: 1869

Or May be something like this

var newURL = $(".list-portfolio a").attr("href"),
pathArray = newURL.split( '/' ),
secondLevelLocation = pathArray.shift();

var pathArray = pathArray.join('/');

Upvotes: 0

yogi
yogi

Reputation: 19591

You could try this

var newURL = $(".list-portfolio a").attr("href"),
    pathArray = newURL.split( '/' ),
    secondLevelLocation = pathArray[0];
console.log(pathArray);

var pathArray = pathArray[3] +'/'+ pathArray[4];

Upvotes: 0

Related Questions