J'ai besoin de diviser la chaîne :

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

Dans un tableau bidimensionnel :

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

J'ai essayé avec:

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

Mais sans succès

0
Luca Ruggeri 15 mars 2019 à 17:05

2 réponses

Meilleure réponse

Utilisez donc JSON.parse, puisque votre chaîne a '' autour des chaînes, elle doit être remplacée par "" afin qu'une instruction replace puisse la gérer. Cela suppose que vos données n'auront pas de guillemets supplémentaires.

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)
2
epascarello 15 mars 2019 à 14:10

Étant donné que votre chaîne est un JSON presque valide, je voudrais simplement changer tous les guillemets simples en guillemets doubles, l'envelopper dans un tableau, puis analyser toute la structure :

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 );
2
Shilly 15 mars 2019 à 14:14