javascript - 将具有字符串索引表示法的对象属性转换为点表示法

标签 javascript angularjs query-string

我对这个有点摸不着头脑。我有一个网址如下

http://localhost:50303/Directory?SearchUnits=km&Postcode=NG1%202AD&&Position[south]=53.9480673197085&Position[west]=-1.1444808302915135&Position[north]=52.9507652802915&Position[east]=-1.1417828697085497

当我像这样使用 angularjs 获取查询参数时

var qs = $location.search();

我得到一个像这样的对象

{ 
  SearchUnits: "km", 
  Postcode: "NG1 2AD", 
  "Position[south]": "53.9480673197085", 
  "Position[west]": "-1.1444808302915135", 
  "Position[north]": "52.9507652802915", 
  "Position[east]": "-1.1417828697085497" 
}

但是我需要它看起来像这样

{ 
  SearchUnits: "km", 
  Postcode: "NG1 2AD", 
  Position: { 
     south: "53.9480673197085", 
     west: "-1.1444808302915135", 
     north: "52.9507652802915", 
     east: "-1.1417828697085497"
  }
}

我该如何解析它?我尝试过字符串化然后解析,但这不起作用,任何帮助将不胜感激

最佳答案

如果键值是静态的,那么对其进行转换非常容易,只需迭代 ['south', 'west', 'north', 'east'] 数组并检索根据需要值/分配/删除:

const obj = { 
  SearchUnits: "km", 
  Postcode: "NG1 2AD", 
  "Position[south]": "53.9480673197085", 
  "Position[west]": "-1.1444808302915135", 
  "Position[north]": "52.9507652802915", 
  "Position[east]": "-1.1417828697085497" 
};
const Position = {};
obj.Position = Position;
['south', 'west', 'north', 'east'].forEach((key) => {
  const inputKey = `Position[${key}]`;
  Position[key] = obj[inputKey];
  delete obj[inputKey];
});


console.log(obj);

关于javascript - 将具有字符串索引表示法的对象属性转换为点表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52065730/

相关文章:

apache - 将 CGI 参数传递给 Windows 上 Apache 中的可执行文件

c# - .Net MVC Actionlink 在查询字符串中使用 %20 而不是 +

java - 使用查询参数处理 Spring-boot 过滤器

javascript - 模态窗口在提交时关闭

javascript - Microsoft JScript js程序运行时错误: Code : 800A1391 'console' is undefined while running node.

javascript - 从 Angular js中的指令中删除焦点后更改输入

javascript - 禁用 Angular-strap 2.0 中的单个日期

javascript - 如何让 SocketCluster 在文件更改时重新启动?

Javascript 故障效果,文本太大,如何调整大小?

javascript - 如何加载 Angular 应用程序中的所有依赖项