let dss = JSON.stringify(arr); let ds = dss.replace(/"(\d)"/g,"$1");
3 Réponses :
let ds = arr.replace(/"(\d+)"/g,"$1"); add + before \d like: (\d+)
Bonne réponse, mais vous devez ajouter une explication et en faire un extrait
Votre expression régulière recherche un chiffre ajoutez un + pour un ou plusieurs
var arr= '[{"a":"b","c":"521"}]'; let ds = arr.replace(/"(\d+)"/g,"$1"); console.log(ds);
ne fonctionnait toujours pas pour moi ... dois-je le faire avant le stringify pas après?
Bien sûr après, avant ce n'est même pas une chaîne ... c'est un objet js, de toute façon pourquoi ne changerais-tu pas l'objet normalement sans regex avant le stringify?
J'analyserais le JSON et utiliserais une fonction de reviveur pour remplacer les chaînes de chiffres par juste les chiffres:
var arr= '[{"a":"b","c":"521"}]'; const parsed = JSON.parse( arr, (key, value) => typeof value === 'string' && /^\d+$/.test(value) ? Number(value) : value ); console.log(JSON.stringify(parsed));
merci .. presque, mais il semble qu'il ne comprend pas les valeurs décimales? c'est-à-dire "38,97219723"
Si les décimales sont une possibilité, ajoutez des décimales facultatives au modèle: ^\d+(?:\.\d+)?$
Ça a marché! cependant .... comment pourrais-je gérer pour prendre également le négatif. c'est-à-dire "-33,21"
Ajouter une option -
au début du modèle?
Tels que -> (- {1}?) ^ \ D + (?: \. \ D +)? $
Probablement comme ça ey? /-?^\d+(?:\.\d+)?$/
Mettez le tiret optionnel après le ^
(au début des chiffres), sinon le motif ne correspondra jamais. ^-?