我有一个以下结构的字符串:
positions = '15,-2,-3,15'
其中描述了点,在本例中为A(15, -2), B(-3, 15)
。
问你如何从像这样的字符串中提取数据?
最好将结果作为某种结构的数组(例如point[i].x, point[i].y
),但多维数组也是合适的(例如point[i][0], point[i][1]
)。
答案 0 :(得分: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]);
答案 1 :(得分:0)
这样的东西可以工作,你使用逗号作为分隔符将字符串拆分为标记,然后循环遍历该数组,用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));
}
答案 2 :(得分:0)
我可能会这样做:
positions = '15,-2,-3,15';
Arr = [];
pos = positions.split(',');
i = 0;
while( pos.length ){
Arr[i++] = pos.splice( 0, 2 );
}
答案 3 :(得分:0)
只是为了踢:
(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 }; }));