优选主流主机商
任何主机均需规范使用

js获取url后面的参数并变为对象的方法

要从 URL 中获取后面的参数并将其转换为对象,可以使用以下方法:

function getUrlParams() {
  var params = {};
  var queryString = window.location.search.substr(1); // 获取URL中问号后面的查询字符串部分
  
  if (queryString) {
    var paramPairs = queryString.split('&'); // 将查询字符串拆分为键值对数组
    
    for (var i = 0; i < paramPairs.length; i++) {
      var pair = paramPairs[i].split('='); // 将键值对拆分为键和值
      
      // 解码键和值,并存储到params对象中
      var key = decodeURIComponent(pair[0]);
      var value = decodeURIComponent(pair[1] || '');
      
      // 如果params中已存在相同的key,则将值追加到数组中
      if (params.hasOwnProperty(key)) {
        if (!Array.isArray(params[key])) {
          params[key] = [params[key]];
        }
        params[key].push(value);
      } else {
        params[key] = value;
      }
    }
  }
  
  return params;
}

// 示例使用:
var urlParams = getUrlParams();
console.log(urlParams);

上述代码中,getUrlParams() 函数首先获取 URL 中问号后面的查询字符串部分(即 window.location.search),然后将其拆分为键值对数组。接下来,通过遍历每个键值对,并使用 decodeURIComponent() 解码键和值,将其保存到一个名为 params 的对象中。

在处理键值对时,如果存在相同的键,它会将值追加到一个数组中,以便能够存储多个相同键的不同值。

最后,将获取到的 params 对象返回,以便在其他地方使用。通过调用 getUrlParams() 函数,可以获取 URL 后面的参数并转换为一个包含所有参数的对象。

例如,对于以下 URL:http://example.com?name=John&age=25&city=New%20YorkgetUrlParams() 将返回以下对象:

{
  name: "John",
  age: "25",
  city: "New York"
}

如果存在多个具有相同键的参数,例如 http://example.com?name=John&name=Smith,则将返回以下对象:

{
  name: ["John", "Smith"]
}
未经允许不得转载:搬瓦工中文网 » js获取url后面的参数并变为对象的方法