javascript - 从单个 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
在示例中具有该值,只是为了表明它可以区分两个数组。
推荐阅读
- python - 生成直方图时如何防止重复的 NaN 条目?
- inno-setup - Inno Setup 和 VC Redistributable 并优雅地处理退出代码 3010
- java - RecursiveLinkedCollections 添加方法
- apache-spark - 根据执行器、内核和内存确定 spark 中的分区数(在 YARN 上运行)
- openlayers - Openlayers 6.4.3:未捕获的类型错误:无法分配给字符串“bo”的只读属性“0”
- python - 通过 python 启用 systemd 服务
- reactjs - 如何在 ReactJS 状态数组中添加更多元素?
- python - Pandas - 取 N 个先前的值并从 Series 中创建矩阵
- c# - C# 仅将表中的第一列文本添加到列表中
用于断言 - ios - 在 Xcode 中,为什么会有更多/更少的视图取决于模拟器中运行的设备?