嗨,我是JavaScript的新手,我对如何处理像下面这样的对象感到有点困惑。如何将其转换为数组pt,其中每个条目都具有属性selid x,y,z?
这就是我在Chrome控制台中看到的:Object {pt[2][y]: "1.3571934700012207", pt[0][selid]: "2", pt[0][z]: "0", pt[3][x]: "3.6684491634368896", pt[2][z]: "0"…}
如果我尝试访问pt,如下例所示:
var X = pt[2].x;I get和错误"Cannot read property of undefined“。我假设这是因为这个对象更像是一个字典,键是"pt2“,值是"1.3571934700012207”。然而,我想像数组pt一样访问它,它的对象具有属性x,y,z,selid。有没有办法将数据转换/解析成我想要的格式?在此之前非常感谢。
发布于 2012-12-02 02:58:47
这是可怕的不可读,所以我为此道歉。
但是你可以试试这个:
var v = {pt:new Array()};
for(var a in data) eval("if(!v." + /pt\[\d+\]/.exec(a) + ") v." + /pt\[\d+\]/.exec(a) + " = {}; v." + a.replace(/\]\[/,"][\"").replace(/\]$/,"\"]") + " = " + data[a]);那么v应该有你想要的东西。
(它只是创建/执行以下几行代码:
if(!v.pt[2]) v.pt[2] = {}; v.pt[2]["y"] = 1.3571934700012207
if(!v.pt[0]) v.pt[0] = {}; v.pt[0]["selid"] = 2
if(!v.pt[0]) v.pt[0] = {}; v.pt[0]["z"] = 0
if(!v.pt[3]) v.pt[3] = {}; v.pt[3]["x"] = 3.6684491634368896
if(!v.pt[2]) v.pt[2] = {}; v.pt[2]["z"] = 0)
https://stackoverflow.com/questions/13662057
复制相似问题