【问题标题】:Remove assoc array from query string从查询字符串中删除关联数组
【发布时间】:2021-11-04 08:16:50
【问题描述】:

我想从查询 string 中删除数组变量 conditions,这将是 window.location.search

  • 第一个输出Before 是初始字符串。
  • 第二个是删除sub之后
  • 第三个仍然包含conditions

我怎样才能摆脱它?

编辑 未编码的字符串是

conditions[0][0][field]=firstname&conditions[0][0][operator]=is&conditions[0][0][value]=John&conditions[1][0][field]=lastname&conditions[1][0][operator]=is&conditions[1][0][value]=Doe

这是应用程序所需要的。

var string = '?page=foo&sub=bar&conditions%5B0%5D%5B0%5D%5Bfield%5D=firstname&conditions%5B0%5D%5B0%5D%5Boperator%5D=is&conditions%5B0%5D%5B0%5D%5Bvalue%5D=John&conditions%5B1%5D%5B0%5D%5Bfield%5D=lastname&conditions%5B1%5D%5B0%5D%5Boperator%5D=is&conditions%5B1%5D%5B0%5D%5Bvalue%5D=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());

【问题讨论】:

  • 应该是 URL 中 conditions 之后的 =
  • 您的 URL 中没有名为 conditions 的参数 - 不是从 JS 的角度来看。您拥有的是名为conditions[0][0][field]conditions[0][0][operator] 等的参数。
  • 它是一个关联数组
  • 好的,所以我需要一个自定义方法来删除所有conditions
  • 当它解析这种查询字符串时,它只是一个数组,例如,PHP 的角度。但是对于 JS 来说,这些只是名称不同的参数。猜猜你可以做类似循环所有条目的事情,然后检查密钥是否以conditions - developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/…

标签: javascript urlsearchparams


【解决方案1】:

你想要这个吗?

var string =
  "?page=foo&sub=bar&conditions%5B0%5D%5B0%5D%5Bfield%5D=firstname&conditions%5B0%5D%5B0%5D%5Boperator%5D=is&conditions%5B0%5D%5B0%5D%5Bvalue%5D=John&conditions%5B1%5D%5B0%5D%5Bfield%5D=lastname&conditions%5B1%5D%5B0%5D%5Boperator%5D=is&conditions%5B1%5D%5B0%5D%5Bvalue%5D=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"));

【讨论】:

  • pagesub 可能会发生变化/缺失/未知。我真的很想摆脱conditions
  • 感谢您的代码,这给我带来了正确的方向。
猜你喜欢
  • 2015-11-28
  • 2014-03-27
  • 2021-05-13
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多