从带有 & 符号的 URL 获取参数

问题:如何正确从带有&符号的URL中获取参数?


上下文:我试图弄清楚为什么iTunes Store Webservice在删除amp;时返回不同的数据。。我正在使用这个比较工具: https: //www.diffnow.com/compare-urls


原文网址:


https://itunes.apple.com/search?term=star&country=au&media=movie&all

让我更困惑的是url 中的all值。根据iTunes Store Webservice的文档,它是attribute或entity。


但无论如何,我仍然得到不同的结果。重申一下,


原始网址:


https://itunes.apple.com/search?term=star&country=au&media=movie&all

返回以下不同的数据:


a. https://itunes.apple.com/search?term=star&country=au&media=movie&attribute=all

b. https://itunes.apple.com/search?term=star&country=au&media=movie&entity=all

c. https://itunes.apple.com/search?term=star&country=au&media=movie&all


慕运维8079593
浏览 99回答 1
1回答

紫衣仙女

您可以创建一个小助手并使用URL构造函数来获取表示参数定义的 URL 的对象。从这个对象中,我们将获取作为查询字符串的搜索属性,并将其替换为。&&function getItunesParameters(url) {  const { search } = new URL(url);  const parsedQuery = search.replace(/&/g, '&');  return parsedQuery;}getItunesParameters('https://itunes.apple.com/search?term=star&country=au&media=movie&all');// => "?term=star&country=au&media=movie&all"如果您以后可以轻松处理,您可以选择返回一个对象function getItunesParameters(url) {  const { search } = new URL(url);  const parsedQuery = search.replace(/&/g, '&');  return parsedQuery    .slice(1)    .split('&')    .reduce((acc, query) => {      const [key, value] = query.split('=');      return { ...acc, [key]: value || '' };    }, {});}getItunesParameters('https://itunes.apple.com/search?term=star&country=au&media=movie&all'); //?// => {term: "star", country: "au", media: "movie", all: ""}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5