Skip to content

Instantly share code, notes, and snippets.

@Houserqu
Created May 5, 2021 01:37
Show Gist options
  • Save Houserqu/111222c6b8048a0362938bfe811bb388 to your computer and use it in GitHub Desktop.
Save Houserqu/111222c6b8048a0362938bfe811bb388 to your computer and use it in GitHub Desktop.
query-string

URL 的操作,也可以使用第三库 querystring

根据 key 获取 query 的值

export default function (name, url) {
  let src = url || window.location.href;
  if (name && src) {
    var r = new RegExp("(\\?|#|&|^)" + name + "=([^&^#]*)(#|&|$)");
    var m = src.match(r);
    return !m ? "" : m[2];
  }
  return "";
}

获取URL的query对象

export default function (url, decode) {
  url = url || location.href;
  var _paramArray = url.replace(/.*?\?/, '').replace(/#.*/, '').split('&');
  var params = {};

  for (var _idx in _paramArray) {
    if (_paramArray.hasOwnProperty(_idx)) {
      var row = _paramArray[_idx];
      var splitIdx = row.indexOf('=');
      if (splitIdx > 0) {
        var key = row.substring(0, splitIdx);
        var value = row.substring(splitIdx + 1);
        if (decode) {
          try {
            value = decodeURIComponent(value)
          } catch (e) {
            value = '';
          }
        }
        params[key] = value;
      }
    }
  }
  return params;
}

对象序列化成query string

export default function (param, encode) {
  if (!param)
    return '';
  var qstr = [];
  for (var key in param) {
    if (typeof param[key] != 'undefined' || param[key] != null) {
      qstr.push(key + '=' + (encode ? encodeURIComponent(param[key]) : param[key]));
    }
  }
  return qstr.join('&');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment