JS:指定したurlパラメータを取得するか、すべて(オブジェクト形式)


私のホームページに入って、もっとJSの分かち合いを見ます!
私のコードはどれだけ短いか、この文章はどれだけ短いか!(ㅍ_ㅍ)

1.考え方


ブラウザで得られたパラメータの文字列を取得し、判断してオブジェクトに変換し、パラメータ名が指定されていない場合は、そのオブジェクトに直接戻ります.

2.コード


必要なことはすべて注釈の中にあります.まずコードを貼ってください.(プログラマーがなぜあまり話さないのかが分かったようです)
/**
 *   :       
 *       ,             
 *       ,        
 *   :    
 *   :"?id=123&name=   "
 *   :{id: "123", name: "   "}
 */
var getLocationParam = (name) = >{
  let param = window.location.search.substr(1);
  if (!param) {
    return undefined;
  } else {
    let pArr = param.split("&");
    let res = {};
    for (let i = 0; i < pArr.length; i++) {
      let item = pArr[i].split("=");
      res[item[0]] = item[1] ? decodeURI(item[1]) : null;
    }
    return !name ? res: res[name];
  }
};

パラメータに中国語がある場合は「decodeURI()」を直接使用しますが、「unescape()」は適用されません.(QQQBrowser、Chrome、IE 9-11をテストしました)
実行:
console.log(getLocationParam("id"));
//  :123
console.log(getLocationParam("name"));
//  :   
console.log(getLocationParam("due"));
//  :undefined
console.log(getLocationParam());
//  :{id: "123", name: "   "}

ファイルのダウンロード(CSDN)
指定したパラメータを正規で取得するコードもあります.まぁ、直接コードを貼ってみましょう.
/**
 *   :          
 *   :    
 */
var getLocationQueryByName = (name) = >{
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return decodeURI(r[2]);
  return null;
};