Comment puis-je ajouter 1 à un grand nombre entier représenté comme une chaîne en JavaScript?

Comment puis-je ajouter 1 à cette chaîne en JavaScript?

var message = "12345612345678901234567890"; 

Je veux la sortie comme ceci:

 "12345612345678901234567891" 

J'ai essayé ceci:

 var message = "12345612345678901234567890"; message = parseInt(message); var result = message + 1; 

Mais parseInt renvoyé une valeur en notation scientifique comme 1.234567896453e + 25.

Essayez la grande bibliothèque entière ici pour ajouter de gros nombres.

 var message = "12345612345678901234567890"; var messageAsNumber = bigInt(message); var messagePlusOne = messageAsNumber.add('1'); console.log(messagePlusOne.toString()); 
 <script src="https://peterolson.github.io/BigInteger.js/BigInteger.min.js"></script> 

Vous pouvez créer un tableau à partir de la chaîne dans .length s of 3 partir de la fin de la chaîne.

Utilisez un motif qui vérifie si l'addition 1 aboutirait à l'index du tableau car un nombre additionnel 1000 , s'il est true , augmente l'indice de tableau précédent par 1 et remplissez l'indice de tableau actuel avec "000" .

Le schéma ci-dessous vérifie et ajuste les deux derniers éléments du tableau; Le même modèle peut être étendu pour vérifier chaque index du tableau, pour ajuster correctement un ou plusieurs des index à "000" et augmenter l'indice précédent par 1 .

 let message1 = "12345612345678901234567890"; let message2 = "12345612345678901234567999"; let message3 = "12345612345678901234999999"; function addNumberToString(str, numToAdd, digits = []) { const [N, len, max] = [3, str.length, 1000]; for (let i = -N, l = len; digits.length < len / N; i -= N, l -= N) { digits.unshift(str.slice(i, l)); } function add(m) { if (+digits[digits.length - m] + numToAdd < max) { let n = +digits[digits.length - m]; digits[digits.length - m] = String(Number(n + numToAdd)); } else { const M = m + 1; if (+digits[digits.length - M] + numToAdd < max) { let n = +digits[digits.length - M]; digits[digits.length - M] = String(Number(n + numToAdd)); digits[digits.length - (M - 1)] = "0".repeat(N); } else { if (digits[digits.length - (m + 1)]) { digits[digits.length - (M - 1)] = "0".repeat(N); add(m + 1); } } } return digits.join("") } return add(1); } console.log( addNumberToString(message1, 1) , addNumberToString(message2, 1) , addNumberToString(message3, 1) );