Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从开始向查询参数字符串添加键值_Javascript - Fatal编程技术网

Javascript 从开始向查询参数字符串添加键值

Javascript 从开始向查询参数字符串添加键值,javascript,Javascript,我在路由器中持有一组字符串格式的键值对。 能够按如下方式提取这些值 const params = router.location.search; // example value: ?one=1&two=2&three=3 我需要将另一组键值附加到此。因此,我以以下内容结束 const params = `${router.location.search}&token=${token}`; // value: ?one=1&two=2&three=3&

我在路由器中持有一组字符串格式的键值对。
能够按如下方式提取这些值

const params = router.location.search; // example value:  ?one=1&two=2&three=3
我需要将另一组键值附加到此。因此,我以以下内容结束

const params = `${router.location.search}&token=${token}`; // value: ?one=1&two=2&three=3&token=${token}
但我希望维护顺序,使令牌值成为第一个查询参数,如下所示

?token=${token}&one=1&two=2&three=3
我不能只是移动标记,使其在问号的串联cos中处于第一位。结果会是这样,这是错误的

// wrong cos of the question mark placing. 
const params = `token=${token}&${router.location.search}`; // value: token=${token}?one=1&two=2&three=3
目前,我正在做下面的工作,虽然有效,但很混乱。我正在使用子字符串
从路由器值中删除问号,并将其添加到新创建的
字符串的开头。有更好的优雅解决方案吗

const str = router.location.search;
const params = `?token=${token}&${str.substring(1, str.length)}`;

注:我知道查询参数中的顺序并不重要,但这是为了在url中显示和满足一些分析要求而需要的。

您可以使用URLSearchParams

函数getParams(searchQuery,令牌){
const searchParams=新的URLSearchParams(searchQuery);
返回`?token=${token}&${searchParams.toString()}`;
}

log(getParams('one=1&two=3&two=3','ab')
您是否知道以及如何使用它在查询的字符串表示和查询的对象表示之间来回转换?@Wyck不幸的是,它有一个
append()
方法,但没有
prepend()
方法。因此,要实现这一点,他需要遍历对象,将所有参数复制到一个新对象。您所做的看起来是最简单的解决方案。您缺少
${token}
@Barmar之后的
&
,谢谢。那是我的错别字。请在我的代码中输入&。它是有效的,我想知道是否有比处理子字符串更优雅的东西。此外,router.location.search可能为空。这意味着一个丑陋的&在最后将被悬挂,除非我在适当的地方添加更多的检查来处理这个问题。