1

我想创建一些对象,如 object_point1、object_point2、...,并使用 for 循环将字符串与 x 和 y 坐标分开。我如何使用迭代来创建对象的名称?谢谢

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];
}

目前我使用这种结构:

对于 (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, .......
}
4

2 回答 2

2

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

浏览器:

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}

节点.js

> var i = 12;
> global['MyObj'+i] = { hello : 'world' };

> console.log(MyObj12);
> console.log(global.MyObj12);
// { hello: 'world' }

看到node.js 全局变量?

但是,您可能想使用自己的,而不是使用windoworglobalobject

> var i = 12, myObj = {};
> myObj['MyObj'+i] = { hello : 'world' };
> console.log(myObj.MyObj12);
// { hello: 'world' }
于 2013-08-20T09:26:13.623 回答
0

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

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;
}
于 2013-08-20T09:51:52.327 回答