从单个URL中获取多个参数的最新密钥参数



当用户在页面"a"中,并且在表单输入字段中写入了一些内容,然后从页面a转到页面b,再从那里返回到页面a时,如果用户想从url获取数据,可以有两个名称相同,例如,这是url?name=james&name=alex我的问题是如何获得最新的"名称",例如名称name=alex就是新名称。以下是我如何从网址:

const query = window.location.toString().split("?")[1];
const urlParams = new URLSearchParams(query);

const Name = urlParams.get("name") || props.order?.name;
<Form.Item label={t( "orders.name")} name="name" initialValue={Name || ""}>
<Input type="string" />
</Form.Item>

这个答案来自HERE。

您应该将名称编码为数组,并将其设置为name参数。添加新名称时,请使用Array.push(ITEM)添加到末尾,并使用Array[Array.length - 1]获取最近添加的项目。

//URL to array:
function URLToArray(url, param) {
return url.substring(url.indexOf(param + '=') + param.length + 1).split('&')[0].split('_');
}
//Array to URL:
function ArrayToURL(array, param) {
return param + '=' + array.join('_');
}
/*************************************/
//You can then use this as such:
// Get Array
var myArray = URLToArray('https://google.com?name=Bob_Joe_Tom&state=Alaska_Texas_Main', 'name');
console.log(myArray);
// Get URL
myArray.push('Steph'); //Lets add a name to the array
var myNameUrl = 'www.google.com?' + ArrayToURL(myArray, 'name');

console.log(myNameUrl);

我这样做是为了在url上也可以有任意数量的数组,因此我在示例中使用state值,只是为了表明它可以区分这两个数组。

这可能会对您有所帮助。

function getLatestParamFromUrl(param="") {
const url = new URL(window.location.href);
const values = url.searchParams.getAll(param);
const latestValues = values.length > 0 ? values.pop() : false;
return !!latestValues && latestValues;
}
console.log(getLatestParamFromUrl("name"));

相关内容

最新更新