2

var url = location.pathname.split("/")URLを部分的に分割するために使用しています。

結果の最初と最後の要素は常に空です。これがなぜなのか、誰か説明できますか?

ありがとうございました。

4

5 に答える 5

1

さて、次の url を考えてみましょうhttp://stackoverflow.com/questions/18762585/jquery-location-pathname-split-returning-empty-first-and-last-elements/。パス名は/questions/18762585/jquery-location-pathname-split-returning-empty-first-and-last-elements/、最初の「/」の前と最後の「/」の後に何もありません。

["", "questions", "18762585", 
 "jquery-location-pathname-split-returning-empty-first-and-last-elements", 
 "18762683", ""]
于 2013-09-12T11:13:13.663 に答える
1

string が分割区切り文字で始まる場合、 の前に何もないため、最初の要素は空/です。文字列の最後と同じこと/- 後に何もない場合、結果配列に空の要素が与えられます。

例:

'/foo/bar/'.split('/')    // ["", "foo", "bar", ""]
'foo/bar/'.split('/')     // ["foo", "bar", ""]
'foo/bar'.split('/')      // ["foo", "bar"]
于 2013-09-12T11:14:43.340 に答える
1

location.pathname は、URL のパス名部分を返します。つまり、ホストとクエリ文字列を含まないパスを返します。

つまり、「http://www.stackoverflow.com/question/1/50/hello?answers=yes」のパス名は「/question/1/50/hello」です。

したがって、パス名が「/a/b/c/」である「 http://site.com/a/b/c/ 」のような URL について質問することになるでしょう。それを「/」で分割すると、「/」で区切られた文字列が返されます。最初と最後のトークンの前には何もないため、最初と最後のトークンには空の文字列が返されます。

于 2013-09-12T11:15:06.590 に答える
1

パスが / で始まり、この前に空の文字列があるためです。パスも / で終わる場合、後ろに別の空の文字列もあります。

これは、単純な JavaScript の動作である jQuery とは何の関係もありません。削除したい場合は、location.pathname の先頭/末尾にある「/」文字を削除するか、配列内の空の文字列を無視することができます。

于 2013-09-12T11:15:29.933 に答える
1

これは、テストでパス名が出力された場合に明確になる場合があります。通常は「/」で始まります。そして、最後の '/' の後に何もなければ、そのような結果が得られます。

于 2013-09-12T11:15:40.890 に答える