将带有字符串索引表示法的对象 属性 转换为点表示法
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);
我对这个有点摸不着头脑。我有一个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);