0

私は文字列を持っています

var chartDataArrayString = '[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[8.44,10.55],[51.79,64.74]';

次に、この文字列から各ユニットを抽出して、2 次元配列に入れたいと思います。したがって、2D 配列には 12 の要素があり、各要素には 2 つの値があります。だから、それはこのように見えるはずです

var 2dArray = [[470, 870.45], [560, 920.49], [350, 540.12], [600, 901.59], [500, 750.4], [620, 401], [480, 724.4], [530, 598.98], [630, 630], [400, 876.69], [220, 1100.2], [500, 1021.9]];

「、」を使用して分割しようとしましたが、各小さな単位の中に「、」もあります。

前もって感謝します。

4

3 に答える 3

2

JSON.parseを使用して、外側の配列に連結するだけです...

var data = JSON.parse("[" + chartDataArrayString + "]");

を使用することもできますが.eval()JSON.parseデータが準拠している限り、少し安全です。

于 2012-07-25T02:26:23.167 に答える
1

JSON.parse()am not i am's answer に示すように、1 行で実行できます。

しかし、あなたがこれを使用.split()することについて話していたので、それを機能させる1つの方法があります:

var dataArray = chartDataArrayString.slice(1,-1).split("],[");

for (var i=0; i < dataArray.length; i++)
    dataArray[i] = dataArray[i].split(",");

つまり、 を使用して先頭と末尾.slice()を削除し、フォームの文字列の配列を作成する際に分割します。次に、配列内の各項目を繰り返し処理して、別の分割でネストされた配列を作成します。[]"],[""0.00,0.00"

編集: 内部要素を文字列ではなく数値にするには、次のようにすることができます (これにより、 JSON.parse() が「正しい」ソリューションであることがさらに明確になります):

for (var i=0; i < dataArray.length; i++){
    dataArray[i] = dataArray[i].split(",").map(Number);
}
于 2012-07-25T02:28:39.833 に答える
0

使用できますeval

var arr = eval('[' + data + ']');

または、文字列で遊ぶことができます:

var arr = [];
var bits = data.replace(/(^\[)|(\]$)/g,'').split('],[');

for (var i=0, iLen=bits.length; i<iLen; i++) {
  arr[i] = bits[i].split(',');
}

何でも合う。ああ、値は数値ではなく文字列になることに注意してください。

于 2012-07-25T02:33:48.257 に答える