删除 Javascript/Jquery 中 URL 的最后一部分
Removing final part of URL in Javascript/Jquery
我有一些URL都遵循相同的结构。
https://www.website.com/services/county/town/servicename/brand/
当搜索结果为零时,我们会显示一个按钮,单击该按钮时会运行一个函数来删除 URL 的最后一部分,从而扩展搜索。
例如,如果上述 URL 返回 0 个结果,则单击我们的按钮将加载https://www.website.com/services/county/town/servicename/
已从搜索条件中删除brand
并扩大结果的机会。
我目前拥有的代码可以工作,但似乎有点黑客。
function expandSearch() {
var currentURL = window.location.href;
var parts = currentURL.split("/");
var lastPart;
if ( parts.length === 9 ) {
lastPart = currentURL.substr(currentURL.lastIndexOf('/') - parts[7].length) + '$';
window.location.href = currentURL.replace( new RegExp(lastPart), "");
} else if ( parts.length === 8 ) {
lastPart = currentURL.substr(currentURL.lastIndexOf('/') - parts[6].length) + '$';
window.location.href = currentURL.replace( new RegExp(lastPart), "");
} else if ( parts.length === 7 ) {
lastPart = currentURL.substr(currentURL.lastIndexOf('/') - parts[5].length) + '$';
window.location.href = currentURL.replace( new RegExp(lastPart), "");
} else if ( parts.length === 6 ) {
lastPart = currentURL.substr(currentURL.lastIndexOf('/') - parts[4].length) + '$';
window.location.href = currentURL.replace( new RegExp(lastPart), "");
}
}
搜索可以在任何时间点返回 0 个结果,直到返回整个数据库的https://www.website.com/services/
点。
URL 也可能缺少元素,例如它可能有一个county
但没有town
。
有没有更好/更干净的方法来删除最终的 URL 元素并将浏览器重定向到这个新的更广泛的搜索?
我最终得到了的最终工作版本,感谢@ebilgin任何寻找的人:
function expandSearch() {
var parts = window.location.pathname.substr(1).split("/");
parts = parts.filter(Boolean); // Remove trailing empty array object
parts.pop(); // Remove last array object
window.location.href = "/" + parts.join("/") + "/"; // Go to new Location
}
您可以使用
.pop()
和.join()
函数来解决您的问题。
function expandSearch() {
var parts = window.location.pathname.substr(1);
var lastCharIsSlash = false;
if ( parts.charAt( parts.length - 1 ) == "/" ) {
lastCharIsSlash = true;
parts = parts.slice(0, -1);
}
parts = parts.split("/");
parts.pop();
parts = "/" + parts.join("/") + (lastCharIsSlash ? "/" : "");
window.location.href = parts;
}
如果每个 URI 都有一个尾部斜杠。这是更清晰的版本。
function expandSearch() {
var parts = window.location.pathname.slice(1, -1).split("/");
parts.pop();
window.location.href = "/" + parts.join("/") + "/";
}
相关文章:
- (Javascript)如何提取当前URL的最后一部分 - 没有文件扩展名
- 如何使用正则表达式或 jQuery 检索 URL 的最后一部分
- 在 Javascript 中获取 url 的最后一部分
- 为什么我的正则表达式捕获组只在匹配多个部分时捕获字符串的最后一部分
- 用于拆分 URL 和删除最后一部分的 JavaScript
- 整页.js 单页滚动 - 无法在最后一部分之后滚动到页脚
- 何时返回表达式的最后一部分
- 如何用javascript建模字符串的最后一部分
- 使用正则表达式或javascript提取ID的最后一部分
- Regex将URL最后一部分与JavaScript匹配
- 目标C切断绳子的最后一部分
- Javascript多行regex先行或字符串的其余部分/字符串的最后一部分
- javascript闭包的最后一部分我仍然没有'我不明白
- 如何获取URL的最后一部分,忽略任何get参数
- jQuery 获取 URL 的最后一部分
- 删除 Javascript/Jquery 中 URL 的最后一部分
- 如何使用Regex和jQuery替换URL的最后一部分
- 自动介绍最后一部分的时间字段
- 正则表达式匹配字符串的最后一部分
- 获取CSV字符串的最后一部分