У меня есть URL-адреса, которые соответствуют той же структуре.Удаление конечной части URL-адреса в Javascript/JQuery
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
}
Благодарим за сообщение, что это будет работать отлично, если бы не косая черта в URL-адресе, дающая мне дополнительный пустой объект массива. '[" http: "," "," website.com "," services "," county "," servicename "," "]'. Любая идея, как я могу удалить только этот последний объект из массива? Я предполагаю, что я мог бы использовать pop() дважды, но это кажется немного взломанным снова :) –
@TomPinchen Фактически location.pathname более точно, чем location.href. Вы можете использовать новую версию моего решения. – ebilgin
Это намного чище. Хотя он по-прежнему только удаляет конечную косую черту из моего URL-адреса. Вы знаете, почему это было бы? –