哈希链接修改参数并返回

发布时间:2024年01月10日
// 修改方法
modifyUrlParam(data = {}, url = window.location.href) {
	const singleCallBack = (_url, _key, _value) => {
		const parsedUrl = new URL(_url)
		const _params = new URLSearchParams(parsedUrl.search)
		const regex = new RegExp(`([?&])${_key}=[^&]*`)
		const modifiedUrl = _url.replace(regex, (match, prefix) => {
		_params.set(_key, _value)
			return prefix + _params.toString()
		})
		return modifiedUrl
	}
	if (Object.prototype.toString.call(data) === '[object Object]') {
		const keys = Object.keys(data)
		keys.forEach((key) => url = singleCallBack(url, key, data[key]))
	} else if (Array.isArray(data)) {
		data.forEach((item) => url = singleCallBack(url, item.key, item.value))
	}
	return url
}

// 哈希链接
let url = 'https://www.baidu.com/#/?brand=apple&shopId=1000000127'

// 调用方式 - Object
const params = { brand: '111', shopId: '1000000128' }
const params_newUrl = modifyUrlParam(url, params)
console.log(params_newUrl) // https://www.baidu.com/#/?brand=111&shopId=1000000128

// 调用方式 - Array
const arr = [
	{ key: 'brand', value: '222' },
	{ key: 'shopId', value: '1000000129' }
]
const arr_newUrl = modifyUrlParam(url, arr)
console.log(arr_newUrl) // https://www.baidu.com/#/?brand=222&shopId=1000000129

文章来源:https://blog.csdn.net/successLadder/article/details/135509200
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。