如何在jQuery / Javascript中获取多个命名的查询字符串值?

时间:2016-12-11 15:06:20

标签: javascript jquery

我有以下参数

/Search?category=1&attributes=169&attributes=172&attributes=174&search=all

我试图将只是属性查询字符串值作为javascript中的数组,例如。

attributes = ['169','172','174'] 

请注意,可能还有其他不相关的参数,例如搜索或类别。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

(function() {
  
    function getJsonFromUrl(url) {
	  var query = url.substr(1);
	  var arr = [];
	  query.split("&").forEach(function(part) {
	    var item = part.split("=");
	    arr.push(decodeURIComponent(item[1]));
	  });
	  return arr;
	}

    var url = "https://example.com?category=1&attributes=169&attributes=172&attributes=174&search=all";  
    var params = getJsonFromUrl(url);	
    console.log(params);
  
})();

希望这有帮助!

答案 1 :(得分:1)

可能不是正确的答案,只是尝试了

var str = "/Search?category=1&attributes=169&attributes=172&attributes=174&search=all";

var str1 = str.split("&");
var attributesArray = [];

  for(var i=0; i<str1.length; i++) {
     if (str1[i].includes("attributes")) {
       attributesArray.push(str1[i].replace("attributes=", ""));
     }
}

小提琴https://jsfiddle.net/5Lkk0gnz/

答案 2 :(得分:0)

这应该可以做你想要的,假设你已经有了你的网址:

var url = "/Search?ategory=1&attributes=169&attributes=172&attributes=174&search=all";

var attrs = url
  .match(/attributes=\d*/g)
  .map(function(attr){
    return Number(attr.replace("attributes=", ""));
  });

console.log(attrs); //=> [169, 172, 174]