JS:使用迭代器循环创build对象

我想创build一些对象,如object_point1,object_point2,…与for循环分割一个string与x和y坐标。 我如何使用迭代来创build对象的名称? 谢谢

var vMsg = req.body.myMessage; var fields = vMsg.split(/\n/); var myobjct = new Object(); myobject.PointCount=parseFloat(paramsCoords); for (var ii=0; ii<fields.length; ii++) { var coord=fields[ii].split(/\t/); //console.info ("X" + coord[0]); //console.info ("Y" + coord[1]); var object_Point[ii] = new Object(); object_Point[ii].x_m=parseFloat(coord[0]); object_Point[ii].y_m=parseFloat(coord[1]); myobject.Polygon_Point[ii]=object_Point[ii]; } 

目前我使用这种结构:

for(var ii = 0; ii

 var coord=fields[ii].split(/\t/); var objPolygon_Point = new Object() objPolygon_Point["point" + ii] = new Object(); objPolygon_Point["point" + ii].x_m=parseFloat(coord[0]); objPolygon_Point["point" + ii].y_m=parseFloat(coord[1]); if (ii=='1') { myobject.Polygon_Point1=objPolygon_Point["point" + ii]; } if (ii=='2') { myobject.Polygon_Point2=objPolygon_Point["point" + ii]; } // ii==3, ii==4, ....... } 

您可以在全局范围内生成dynamic对象名称,如:

浏览器:

 var ii = 11 , x = 123 , y = 234; window['Object_Point' + ii] = { x : parseFloat(x), y : parseFloat(y) } console.log(Object_Point11); console.log(window.Object_Point11); // Object {x: 123, y: 234} 

的node.js

 > var i = 12; > global['MyObj'+i] = { hello : 'world' }; > console.log(MyObj12); > console.log(global.MyObj12); // { hello: 'world' } 

看到node.js全局variables?

但是,而不是使用windowglobal ,你可能想要使用自己的object

 > var i = 12, myObj = {}; > myObj['MyObj'+i] = { hello : 'world' }; > console.log(myObj.MyObj12); // { hello: 'world' } 

我直接用你的例子。 我会build议创build中间地图对象。 即像所有点的持有者。 使用全局命名空间不是一个好的做法。

 var vMsg = req.body.myMessage; var fields = vMsg.split(/\n/); var myobjct = new Object(); myobject.PointCount=parseFloat(paramsCoords); var points = {}; for (var ii=0; ii<fields.length; ii++) { var coord=fields[ii].split(/\t/); //console.info ("X" + coord[0]); //console.info ("Y" + coord[1]); var point = points["point" + ii] = new Object(); point.x_m = parseFloat(coord[0]); point.y_m = parseFloat(coord[1]); myobject.Polygon_Point[ii] = point; }