如何从 URL 中获取数组? [复制]
Posted
技术标签:
【中文标题】如何从 URL 中获取数组? [复制]【英文标题】:How to get an array from the URL? [duplicate] 【发布时间】:2019-06-20 03:40:20 【问题描述】:我在我的 URL 中放入了一个数组,如下所示:
var params = arrayitems.join('&');
var url = "https://www.example.com/page?="+params;
所以 URL 看起来像这样:
https://www.example.com/page?=item1&item2&item3&item4&item5
现在有谁知道我如何将这些项目放回下一页的数组中?
谢谢!
【问题讨论】:
不应该是https://www.example.com?page=item1&item2&item3&item4&item5
吗?或类似的东西?查询参数需要一个键。
How to get the value from the GET parameters? 和 How to obtain the query string from the current URL with javascript? 和 javascript get querystring 的可能重复
与许多问题一样,您的问题实际上太宽泛了,因为您将两个独立的问题合并为一个问题。对于您正在执行的操作,该过程分为两个步骤 A)获取查询字符串(已为其提供了副本),然后 B)将该字符串拆分为一个数组(为其提供了另一个副本。如果您的查询字符串没有如果不包含=
字符,那么还有另一种比较合理的方法是使用URLSearchParams.keys()
来遍历键以创建一个数组。(续)
鉴于您可以控制设置查询字符串,只需获取查询字符串并将其拆分是合理的。但是,使用URLSearchParams.keys()
将是一个更强大的解决方案,可用于允许您拥有多个其他参数和/或避免人们在其他参数中错误地手动编辑的一些问题。
【参考方案1】:
您可以通过page?=
和&
拆分它们
let arrayitems = ['item1','item2','item3','item4','item5']
var params = arrayitems.join('&');
var url = "https://www.example.com/page?="+params;
let arrayBack = url.split('page?=')[1].split('&')
console.log(arrayBack)
【讨论】:
【参考方案2】:网址对象:
使用URL 从搜索参数中获取您需要的数据。
URL 用于解析、构造、规范化和编码 URL。
URL 对象有一个非常方便的方法,叫做searchParams
URL 接口的 searchParams 只读属性返回一个 URLSearchParams 对象允许访问 GET 解码查询 URL 中包含的参数。
快速解决方案:
不推荐...但有效
由于您的查询参数有效(没有键,只有值)需要一个额外的步骤来获取值。 p>
const url = new URL('https://www.example.com/page?=item1&item2&item3&item4&item5');
const res = [...url.searchParams]
.flat()
.filter(v=>v!==null&&v.length>0);
console.log(res);
使用有效 URL 的更好解决方案:
如果您改为按以下方式组织您的 URL,那将是 更好,这样您的 url 字符串看起来像
https://www.example.com/page?item=item1&item=item2&item=item3
const params = ['item1','item2','item3']
.map(v=>'item='+v)
.join('&');
const urlStr = "https://www.example.com/page?"+params;
const url = new URL(urlStr);
//Two possible ways of getting the values
//Option 1
const resOption1 = url.searchParams.getAll('item');
//Option 2
const resOption2 = [...url.searchParams.values()];
console.log(resOption1);
console.log(resOption2);
【讨论】:
【参考方案3】:JavaScript:
// Create the object which is an array
var output = new objPropertyAndValues;
var TempArray=[]; // blank array
// Lets grab the URL (windows.location.href)
var url_string = window.location.href;
var url = new URL(url_string);
//We now have URL as an object to read from.
//Lets turn the searchParams into a string which we can then split into an Array
var urlParamsString = url.searchParams.toString();
//Now lets split urlParamsString into an array
var AllParamsFound = urlParamsString.split("&");
// Lets read each array item by doing a loop
// We then split the array item value by the "=" sign to split parameter and value
for (i = 0; i < AllParamsFound .length; i++)
TempArray= AllParamsFound [i].split("=");
output.Property[i] = TempArray[0];
output.Value[i] = TempArray[1];
console.log(output);
//We allow an object to be created.
function objPropertyAndValues()
this.Property = [];
this.Value = [];
运行示例:
// Create the object which is an array
var output = new objPropertyAndValues;
var TempArray=[]; // blank array
// Lets grab the URL (windows.location.href)
var url_string = "http://www.google.com?myName=Datacure&AnswerID=54379924&Likes=Pizza";
var url = new URL(url_string);
//We now have URL as an object to read from.
//Lets turn the searchParams into a string which we can then split into an Array
var urlParamsString = url.searchParams.toString();
//Now lets split urlParamsString into an array
var AllParamsFound = urlParamsString.split("&");
// Lets read each array item by doing a loop
// We then split the array item value by the "=" sign to split parameter and value
for (i = 0; i < AllParamsFound .length; i++)
TempArray= AllParamsFound [i].split("=");
output.Parameter[i] = TempArray[0];
output.Value[i] = TempArray[1];
// Example output
console.log (output.Value[0] + " should get " + output.Value[2] + " for answering question id: " + output.Value[1]);
// View the array
console.log(output);
//We allow an object to be created.
function objPropertyAndValues()
this.Parameter = [];
this.Value = [];
【讨论】:
以上是关于如何从 URL 中获取数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Javascript 中的 url 获取 #pg= 值? [复制]