我有以下结构的字符串:
positions = '15,-2,-3,15'
在这种情况下,它描述了点A(15, -2), B(-3, 15)
。
Q如何从这样的字符串中提取数据?
最好将结果作为某种结构的数组(例如,point[i].x, point[i].y
),但多维数组也是合适的(例如point[i][0], point[i][1]
)。
我有以下结构的字符串:
positions = '15,-2,-3,15'
在这种情况下,它描述了点A(15, -2), B(-3, 15)
。
Q如何从这样的字符串中提取数据?
最好将结果作为某种结构的数组(例如,point[i].x, point[i].y
),但多维数组也是合适的(例如point[i][0], point[i][1]
)。
如果使用 split,它会将值转换为字符串,因此您需要使用 parseInt() 或 parseFloat() 将它们转换回数字。
如果您只想快速获取数字而不将它们转换为对象,则可以使用JSON.parse的强大功能
var positions = '15,-2,-3,15';
var arrPositions = JSON.parse("[" + positions + "]");
A([arrPositions[0], arrPositions[1]);
B(arrPositions[2], arrPositions[3]);
我可能会这样做:
positions = '15,-2,-3,15';
Arr = [];
pos = positions.split(',');
i = 0;
while( pos.length ){
Arr[i++] = pos.splice( 0, 2 );
}
只是为了踢球:
(function f (e, s, p, r) {
r = e.exec(s);
return r ? [p(r[1], r[2])].concat(f(e, s, p)) : [];
}(/(-?\d+),(-?\d+)/g, '15,-2,-3,15',
function (x, y) { return { x: x, y: y }; }));
像这样的东西会起作用,您使用逗号作为分隔符将字符串拆分为标记,然后循环通过该数组创建一些带有 x 和 y 的 Point 对象。
var data = positions.split(',');
var points = [];
for(var i = 0; i < data.length - 1; i++) {
var x = data[i];
var y = data[++i];
points.push(new Point(x,y));
}