JavaScript使用split、join、filter修改URL路径并在指定位置插入user1
问题原因
你现在的代码逻辑是在过滤路径片段时记录alt值,最后才拼到路径末尾,所以user1自然会出现在路径尾部,而不是你想要的中间位置。另外你贴出的原有代码最后存在语法错误,函数体的闭合符号写为了),实际应为}。
更简洁的实现方案
直接把路径切分成片段数组后,用数组方法操作对应片段,逻辑更直观也更容易维护:
方案1:直接替换原user片段
如果原路径固定有user字段需要替换为user1,用这个方案就行:
export const generateUrl = () => { const path = "settings/user/account/profile"; const pathSegments = path.split("/"); const userPos = pathSegments.indexOf("user"); // 找到user位置就替换为user1 if (userPos > -1) pathSegments[userPos] = "user1"; return pathSegments.join("/"); }
方案2:固定插入到settings和account之间
如果不管中间原有片段是什么,都要保证user1在settings之后、account之前,用这个方案适配性更强:
export const generateUrl = () => { const path = "settings/user/account/profile"; const pathSegments = path.split("/"); const settingsPos = pathSegments.indexOf("settings"); const accountPos = pathSegments.indexOf("account"); if (settingsPos > -1 && accountPos > -1) { // 删除settings和account之间的原有片段,插入user1 pathSegments.splice(settingsPos + 1, accountPos - settingsPos - 1, "user1"); } return pathSegments.join("/"); }
内容的提问来源于stack exchange,提问作者sawcc
相关产品推荐
相关产品推荐

