// 修改方法
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
【OpenHarmony-NDK技术】简单将cJson移植到OpenHarmony中,并在c层修改参数值再返回json
2024-01-11 05:58:04 12 阅读