Удалить массив assoc из строки запроса

#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. Спасибо за код, это ведет меня в правильном направлении.