これはこれまでの私のコードです:
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);
しかし、コードを実行すると、次のようになります:[9, 1, 2, 3, 4, 5, 6, 7, 8]
誰かが問題を見ることができるか、より良い解決策を見つけることができれば、私は非常に感謝します!
なぜこれをしないのですか?
var n = 123456789;
var digits = (""+n).split("");
(123456789).toString(10).split("")
^^これは文字列の配列を返します
(123456789).toString(10).split("").map(function(t){return parseInt(t)})
^^これはintの配列を返します
どうですか:
const n = 123456;
Array.from(n.toString()).map(Number);
// [1, 2, 3, 4, 5, 6]
これは数か月前に尋ねられたことに気づきましたが、私はより簡潔なサムコンの答えに追加がありますが、コメントとして追加する担当者がいません!
の代わりに:
(123456789).toString(10).split("").map(function(t){return parseInt(t)})
考慮してください:
(123456789).toString(10).split("").map(Number)
上記の答えを少し修正しました。 「map」メソッドは、2番目の引数として「Array.from」に既に組み込まれているため、明示的に「map」メソッドを呼び出す必要はありません。 [〜#〜] mdn [〜#〜] の時点で。
Array.from(arrayLike [、mapFn [、thisArg]])
let num = 1234;
let arr = Array.from(String(num), Number);
console.log(arr); // [1, 2, 3, 4]
const toIntArray = (n) => ([...n + ""].map(v => +v))
NicolásFantone の答えの代わりになります。あなたはそれが少し読みにくいかもしれないと主張することができます。強調点は、Array.from()がオプションのマップ関数をパラメーターとして使用できることです。中間配列が作成されないため、この方法でパフォーマンスが向上します。
const n = 123456;
Array.from(n.toString(), (val) => Number(val)); // [1, 2, 3, 4, 5, 6]
移動:
var k = Math.pow(10, i);
上
var j = k / 10;
var num = 123456789;
num = num.toString(); //'123456789'
var digits = num.split(""); //[ '1', '2', '3', '4', '5', '6', '7', '8', '9' ]
非常に簡単です。まず、JavaScriptでtoString()メソッドを使用して数値を文字列に変換し、次にsplit()メソッドを使用して文字列を個々の文字の配列に変換します。
たとえば、番号はnumであり、その後
const numberDigits = num.toString().split('');
これは、0より大きい数値に対して機能します。数値を文字列に変換する必要はありません。
function convertNumberToDigitArray(number) {
const arr = [];
while (number > 0) {
let lastDigit = number % 10;
arr.Push(lastDigit);
number = Math.floor(number / 10);
}
return arr;
}
この質問には5年以上かかりましたが、コーディング/スクリプティングの効率的な方法をいつでも歓迎します。
var n = 123456789;
var arrayN = (`${n}`).split("").map(e => parseInt(e))
ここで別の方法。 Javascriptの数値はデフォルトでは分割できないため、最初に数値を文字列に変換する必要があります。
var n = 123;
n.toString().split('').map(Number);
const toIntArray = (n) => ([...n + ""].map(v => +v))
let input = 12345664
const output = []
while (input !== 0) {
const roundedInput = Math.floor(input / 10)
output.Push(input - roundedInput * 10)
input = roundedInput
}
console.log(output)
私はそれを次のように解決しました:
const n = 123456789;
let toIntArray = (n) => ([...n + ""].map(Number));
console.log(toIntArray(n));
const number = 1435;
number.toString().split('').map(el=>parseInt(el));