【问题标题】:get data from javascript string从 javascript 字符串中获取数据
【发布时间】:2013-08-15 13:12:49
【问题描述】:

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

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 将其放入一个数组 - positions.split(',')

标签: javascript arrays string multidimensional-array struct


【解决方案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]);

【讨论】:

    【解决方案2】:

    类似的方法会起作用,您使用逗号作为分隔符将字符串拆分为标记,然后遍历该数组创建一些带有 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));
    }
    

    【讨论】:

      【解决方案3】:

      我可能会这样做:

      positions = '15,-2,-3,15';
      
      Arr = [];
      pos = positions.split(',');
      i = 0;
      while( pos.length ){
          Arr[i++] = pos.splice( 0, 2 );
      }
      

      【讨论】:

        【解决方案4】:

        只是为了好玩:

        (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 }; }));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-07
          • 2018-05-19
          • 1970-01-01
          • 2021-05-31
          相关资源
          最近更新 更多