从javascript字符串中获取数据

时间:2013-08-15 13:12:49

标签: javascript arrays string multidimensional-array struct

我有一个以下结构的字符串:

positions = '15,-2,-3,15'

其中描述了点,在本例中为A(15, -2), B(-3, 15)

你如何从像这样的字符串中提取数据?

最好将结果作为某种结构的数组(例如point[i].x, point[i].y),但多维数组也是合适的(例如point[i][0], point[i][1])。

4 个答案:

答案 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 }; }));