#javascript #urlsearchparams
Вопрос:
Мне нравится удалять переменную массива conditions
из запроса string
, который будет window.location.search
.
- Первый вывод
Before
-это начальная строка. - Во-вторых, после удаления
sub
- Третий все еще содержит
conditions
.
Как я могу от него избавиться?
отредактируйте незашифрованную строку
conditions[0][0][field]=firstnameamp;conditions[0][0][operator]=isamp;conditions[0][0][value]=Johnamp;conditions[1][0][field]=lastnameamp;conditions[1][0][operator]=isamp;conditions[1][0][value]=Doe
что необходимо для приложения.
var string = '?page=fooamp;sub=baramp;conditions[0][0][field]=firstnameamp;conditions[0][0][operator]=isamp;conditions[0][0][value]=Johnamp;conditions[1][0][field]=lastnameamp;conditions[1][0][operator]=isamp;conditions[1][0][value]=Doe';
var params = new URLSearchParams(string);
console.log('Before', params.toString());
params.delete('sub');
console.log('remove sub works', params.toString());
params.delete('conditions');
console.log('conditions still exist', params.toString());
Комментарии:
1.
=
conditions
в URL-адресе должно быть «после».2. У вас нет параметра, названного
conditions
в вашем URL — адресе-не с точки зрения JS. То, что у вас есть, — это названные параметрыconditions[0][0][field]
conditions[0][0][operator]
и т. Д.3. это массив доцентов
4. хорошо, значит, мне нужен пользовательский метод для удаления всех
conditions
?5. Это всего лишь массив, скажем, с точки зрения PHP, когда он анализирует строку запроса такого рода. Но для JS все это просто параметры с разными именами. Думаю, вы могли бы сделать что — то вроде перебора всех записей, а затем проверить, начинается ли ключ с
conditions
— developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/…
Ответ №1:
Ты хочешь этого?
var string =
"?page=fooamp;sub=baramp;conditions[0][0][field]=firstnameamp;conditions[0][0][operator]=isamp;conditions[0][0][value]=Johnamp;conditions[1][0][field]=lastnameamp;conditions[1][0][operator]=isamp;conditions[1][0][value]=Doe";
const urlSearchParams = new URLSearchParams(string);
const params = Object.fromEntries(urlSearchParams.entries());
console.log({ params });
function getFilteredParams(params, filteredString) {
let obj = {};
for (const key in params) {
if (key.indexOf(filteredString) == -1) {
obj[key] = params[key];
}
}
return obj;
}
console.log(getFilteredParams(params, "conditions"));
Комментарии:
1.
page
иsub
могут быть изменены/отсутствуют/неизвестны. Мне очень нравится просто избавиться отconditions
2. Спасибо за код, это ведет меня в правильном направлении.