Javascriptでurlのパスを取得

2020年7月29日水曜日

javascript

t f B! P L

概要

javascriptでurlの文字列からパスの文字列を取得したい。
http://localhost:3000/hoge/huga
の場合は'hoge/huga'の部分
http://localhost:3000/
の場合は'/'を取得したい

splitしてsliceしてjoinする

// 'http://localhost:3000/hoge/huga'.split('/').slice(3)
// →["hoge","huga"]
let path = 'http://localhost:3000/hoge/huga'.split('/').slice(3).join('/')
path == '' ? '/' : path
// →"hoge/huga"

// 'http://localhost:3000/'.split('/').slice(3)
// →[""]
path = 'http://localhost:3000/'.split('/').slice(3).join('/')
path == '' ? '/' : path
// →"/"

splitしてsliceして+=演算子を使う

let path_list = 'http://localhost:3000/hoge/huga'.split('/').slice(3)
let path = ''
for(let v of path_list){
  path += (v == '') ? '/' : v
}
// →"hoge/huga"

path_list = 'http://localhost:3000/'.split('/').slice(3)
path = ''
for(let v of path_list){
  path += (v == '') ? '/' : v
}
// →"/"

不完全燃焼

  • 三項演算子使わない方がいい?もう少しシンプルにしたい。replace使えばシンプルにいけそうだけど、正規表現が分からぬ…
  • Javascript側、もしくはライブラリなんかでurl扱うメソッドとかない?

ちなみにrubyの場合、URI.splitを使う

require 'uri'
URI.split('http://localhost:3000/')
=> ["http", nil, "localhost", "3000", nil, "/", nil, nil, nil]
indexurlの要素
0scheme
1userinfo
2host
3port
4registry
5path
6opaque
7query
8fragment

自己紹介

Webエンジニアをやっています。日々思ったことや、読書レビュー、IT系の記事などを書き連ねています

広告

Ruby mapでnilが入ってしまう件

  概要 ブロック内の結果を配列にして返すrubyのmap。 便利だが以下のように特定の値の時にスキップしたいケースでは、nilが入ってしまう ( 1 .. 5 ). map do | v | next if v == 3 v end => [ 1 , 2...

QooQ