如何从 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 中获取数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

PHP:从数组中获取值? [复制]

如何从 url 中获取参数? [复制]

多维数组:如何获取特定键的所有值? [复制]

如何从 Javascript 中的 url 获取 #pg= 值? [复制]

JavaScript:如何从 URL 获取函数的数据? [复制]

如何从对象数组中获取图像的URL