【问题标题】:Convert object property with string index notation to dot notation将具有字符串索引表示法的对象属性转换为点表示法
【发布时间】:2018-08-28 20:26:15
【问题描述】:

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

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"
  }
}

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

【问题讨论】:

  • 你不能使用 url 来做到这一点。使用 post 传递数据

标签: javascript angularjs query-string


【解决方案1】:

如果键值是静态的,那么转换它很容易,只需遍历 ['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);

【讨论】:

  • 谢谢,这是我试图避免的。无论如何,字段是静态的,所以它可以工作。
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多