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

Convert object property with string index notation to dot notation

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

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'] 的数组并根据需要检索 values/assign/delete:

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);