在数组中使用字符串

时间:2013-04-15 13:15:47

标签: javascript arrays string

我有一个字符串变量,我将其定义为:

var regn="[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],";

我也在使用一些javascript代码,它接受数组中的值并从这些值中绘制线图。代码的部分如下所示。

    var graphData = [{
        data: [[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],],
        color: '#77b7c5',
        points: { radius: 4, fillColor: '#77b7c5' }
    }
];

我正在尝试使用上面定义的变量替换数组中的数据,但是当我这样做时图形不起作用。这是我的代码:

var graphData = [{
        data: [regn],
        color: '#77b7c5',
        points: { radius: 4, fillColor: '#77b7c5' }
    }
];

我哪里出错或者我应该如何将我的字符串中的数据提供给该数组呢?

4 个答案:

答案 0 :(得分:4)

您需要先解析字符串。这通常使用 JSON.parse

完成
var regn="[[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67]]";
var arr = JSON.parse(regn) // now it's an Array

如果您需要支持不支持JSON.parse的浏览器,可以使用 JSON3

对其进行修补

除此之外:请注意,regn有一个迷失的尾随逗号,需要包含在[]{}中(对象方法也需要键,所以数组是这里的方式),所以JSON的发布方式无效(不知道是不是偶然发生了)。

答案 1 :(得分:0)

使用正则表达式解析的替代版本:

var regn="[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],";
var rez = [];
var regex = /\[(\d+),(\d+)\]/g;
var match;
while ((match = regex.exec(regn)) != null) {
    rez.push([match[1], match[2]]);
}

graphData.data = rez;

答案 2 :(得分:0)

取代

var regn="[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],"

试试这个,

var regn=[[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67]];

var graphData = [{
            data: regn,
            color: '#77b7c5',
            points: { radius: 4, fillColor: '#77b7c5' }
        }
    ];

答案 3 :(得分:0)

  1. 按[]分割regn,['。
  2. 从每个块中删除除数字和逗号之外的任何内容
  3. 将每个块拆分为','限制为2个块
  4. 完成!
  5. var parseRegn = function (regnStr) {  
    
        var pairs = regnStr.split('],['),                 // 1
            pairStr = '';
    
        for (var i = 0; i < pairs.length; i++) {
    
            pairStr = pairs[i].replace(/[^\d|,]/g, '');   // 2
    
            if (pairStr.length > 0) {
                pairs[i] = pairStr.split(',', 2);         // 3
            }
        }
        return pairs;                                     // 4
    };
    

    var parseRegn = function (regnStr) { var pairs = regnStr.split('],['), // 1 pairStr = ''; for (var i = 0; i < pairs.length; i++) { pairStr = pairs[i].replace(/[^\d|,]/g, ''); // 2 if (pairStr.length > 0) { pairs[i] = pairStr.split(',', 2); // 3 } } return pairs; // 4 };