JavaScript-如何将字符串拆分为二维数组?

时间:2019-03-15 14:05:09

标签: javascript

我需要分割字符串:

"[true,'3/5', 5],[true, '4/5', 5],[true, '5/5', 5],[true, '6/5', 5],[true, '7/5', 5],[true, '8/5', 5]"

在二维数组中:

[[true, '3/5', 5], [true, '4/5', 5], [true, '5/5', 5], [true, '6/5', 5], [true, '7/5', 5], [true, '8/5', 5]]

我尝试过:

var months = '[2010,1,2],[2010,3,2],[2011,4,2],[2011,3,2]';
var monthArray2d = [];

months.replace(/(\d+)_(\d+)/g, function($0, $1, $2, $3) {
  monthArray2d.push([parseInt($1), parseInt($2), parseInt($3)]);
});

console.log(monthArray2d);

但没有成功

2 个答案:

答案 0 :(得分:2)

因此,请使用JSON.parse,因为您的字符串的字符串周围带有“”,因此需要将其更改为“”,以便replace语句可以处理它。假设您的数据中没有多余的引号。

var str = "[true,'3/5',5],[true,'4/5',5],[true,'5/5',5],[true,'6/5',5],[true,'7/5',5],[true,'8/5',5]"
var arr = JSON.parse("[" + str.replace(/'/g, '"') + "]")
console.log(arr)

答案 1 :(得分:2)

由于您的字符串几乎是有效的JSON,所以我只需将所有单引号更改为双引号,将其包装到数组中,然后解析整个结构:

const source_string = "[true,'3/5',5],[true,'4/5',5],[true,'5/5',5],[true,'6/5',5],[true,'7/5',5],[true,'8/5',5]";

const valid_json = source_string.replace( /'/g, '"' );

const array_wrapped = '[' + valid_json + ']';

const output = JSON.parse( array_wrapped );

console.log( output );