动态替换url函数

needUrl:字符串类型(string)或 数组类型(array),字符串类型时,为只能改变路由最后一位;数组类型时,第一个成员为需要替换的地址字符串,第二个参数为在现地址中需要替换的路由位数,例:http://localhost:8080/#/rightsmarket/couponCode,需要将rightsmarket/couponCode替换成 copt/index,则应该写为['copt/index',2]

thus:字符串(string)或 对象类型(object),需要带入地址后缀的参数,字符串类型,直接与needUrl传入参数进行拼接(传入的字符串不用添加?);对象类型则按照需要传入的信息进行按对象方式传入即可

 directSplicing:选填,可以不用,可以传入任何不为false的值;如果传入参数后,则实现直接让needUrl与thus进行拼接方法,故开启此参数后,needUrl建议为完整的地址内容,切不能为数组类型

        tapUrl(needUrl, thus, directSplicing) {
            // 声明承接新地址变量
            let newUrl;

            // 判断是否开启了直接拼接参数directSplicing
            // -----------------------------------------------------------------------------------------------------------------
            if (directSplicing) {
                newUrl = needUrl;
            } else {
                // 获取目前页面地址,并进行拆分成数组(不需要后缀传参)
                let lodUrl = window.location.href.split('?')[0].split('/');

                // 判断needUrl是否是数组
                if (Array.isArray(needUrl)) {
                    // 是数组的话,则根据 needUrl 数组中的第二成员数量,进行循环获取 lodUrl的内容 拼接新的的地址
                    let urlMsg = '';
                    for (let index = 1; index <= needUrl[1]; index++) {
                        urlMsg = `${lodUrl[lodUrl.length - index]}/${urlMsg}`;
                    }
                    // 剪裁需要的信息
                    urlMsg = urlMsg.substring(0, urlMsg.length - 1);

                    // 修改成最新需要的地址信息
                    newUrl = window.location.href
                        .split('?')[0]
                        .replace(urlMsg, needUrl[0]);
                } else if (typeof needUrl == 'string') {
                    // 修改成最新需要的地址信息
                    newUrl = window.location.href
                        .split('?')[0]
                        .replace(lodUrl[lodUrl.length - 1], needUrl);
                }
            }

            // 判断传入的参数是字符串还是对象
            // -----------------------------------------------------------------------------------------------------------------
            if (typeof thus == 'string') {
                // 是字符串的话,直接弹出拼接好的地址信息
                return `${newUrl}?${thus}`;
            } else if (typeof thus == 'object') {
                // ==========================================================================================
                // 是对象的话,则进行循环并拼接出新的地址
                // 声明承接值的变量 (地址传参格式)
                let Parameters = '';

                // 循环传入的变量thus
                for (const key in thus) {
                    // 拼接地址传参格式
                    Parameters = Parameters + `${key}=${thus[key]}&`;
                }
                // 弹出新地址内容
                return `${newUrl}?${Parameters.substring(
                    0,
                    Parameters.length - 1,
                )}`;
            }
        },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值