C'est mon code jusqu'à présent:
var n = 123456789;
var d = n.toString().length;
var digits = [];
var squaredDigits = [];
for (i = d; i >= 1; i--) {
var j = k / 10;
var r = (n % k / j) - 0.5;
var k = Math.pow(10, i);
var result = r.toFixed();
digits.Push(result);
}
console.log(digits);
Mais quand je lance mon code, je reçois ceci: [9, 1, 2, 3, 4, 5, 6, 7, 8]
Si quelqu'un pouvait voir le problème ou trouver une meilleure solution, je l'apprécierais beaucoup!
Pourquoi ne pas simplement faire ça?
var n = 123456789;
var digits = (""+n).split("");
(123456789).toString(10).split("")
^^ cela retournera un tableau de chaînes
(123456789).toString(10).split("").map(function(t){return parseInt(t)})
^^ cela retournera un tableau d'ints
Je me rends compte que cela a été demandé il y a plusieurs mois, mais j'ai une addition à la réponse de samccone qui est plus succincte mais je n'ai pas le représentant à ajouter en commentaire!
Au lieu de:
(123456789).toString(10).split("").map(function(t){return parseInt(t)})
Considérer:
(123456789).toString(10).split("").map(Number)
Qu'en est-il de:
const n = 123456;
Array.from(n.toString()).map(Number);
// [1, 2, 3, 4, 5, 6]
Modifié la réponse ci-dessus un peu. Nous n'avons pas vraiment besoin d'appeler explicitement la méthode 'map', car elle est déjà intégrée dans 'Array.from' en tant que second argument . À partir de MDN .
Array.from (arrayLike [ mapFn [ thisArg]])
let num = 1234;
let arr = Array.from(String(num), Number);
console.log(arr); // [1, 2, 3, 4]
Voici une alternative à la réponse de Nicolás Fantone . Vous pourriez dire que c'est peut-être un peu moins lisible. L'accent est mis sur le fait qu'Array.from () peut prendre une fonction de carte optionnelle en tant que paramètre. Il y a quelques gains de performance de cette façon, car aucun tableau intermédiaire n'est créé.
const n = 123456;
Array.from(n.toString(), (val) => Number(val)); // [1, 2, 3, 4, 5, 6]
Bouge toi:
var k = Math.pow(10, i);
au dessus de
var j = k / 10;
var num = 123456789;
num = num.toString(); //'123456789'
var digits = num.split(""); //[ '1', '2', '3', '4', '5', '6', '7', '8', '9' ]
C'est très simple, commencez par convertir le nombre en chaîne à l'aide de la méthode toString () en JavaScript, puis utilisez la méthode split () pour convertir la chaîne en un tableau de caractères individuels.
Par exemple, le nombre est num, puis
const numberDigits = num.toString().split('');
Cela fonctionnera pour un nombre supérieur à 0. Vous n'avez pas besoin de convertir le nombre en chaîne:
function convertNumberToDigitArray(number) {
const arr = [];
while (number > 0) {
let lastDigit = number % 10;
arr.Push(lastDigit);
number = Math.floor(number / 10);
}
return arr;
}
Cette question a duré plus de 5 ans pour cette question, mais nous nous félicitons toujours des méthodes efficaces de codage/script.
var n = 123456789;
var arrayN = (`${n}`).split("").map(e => parseInt(e))
Une autre méthode ici. Comme le nombre en Javascript n'est pas divisible par défaut, vous devez d'abord convertir le nombre en chaîne.
var n = 123;
n.toString().split('').map(Number);
let input = 12345664
const output = []
while (input !== 0) {
const roundedInput = Math.floor(input / 10)
output.Push(input - roundedInput * 10)
input = roundedInput
}
console.log(output)
J'ai fini par le résoudre comme suit:
const n = 123456789;
let toIntArray = (n) => ([...n + ""].map(Number));
console.log(toIntArray(n));
const number = 1435;
number.toString().split('').map(el=>parseInt(el));