Ich habe Base-10-Nummer 1000, ich möchte es in eine Base-24-Nummer konvertieren.Wie benutze `reduce`, um eine Base-10-Nummer in eine Base-24-Nummer umzuwandeln?
1000 = 1x24x24 + 17x24 + 16
So ist die Basis-24-Zahl ist [1, 17, 16]
wenn ich es als eine Anordnung dar, und jedes Element verwendet immer noch eine Base-10-Nummer.
Ich denke, es ist nicht schwer for
zu verwenden, um es zu implementieren:
let x = 1000;
let base24 = [];
for(let i=1;;i++) {
let y = x % Math.pow(24,i);
base24.unshift(y/Math.pow(24,i-1));
x = x - y;
if(x===0) {
break;
}
}
console.log(base24);
// output: [1, 17, 16]
Aber ist es möglich, es zu tun, ohne ein for
oder while
zu verwenden? Verwenden Sie zum Beispiel eine reduce
Methode (von ES6)?
' (1000) .toString (24) .split ("") Karte (x =>. parseInt (x, 24)) ' – JJJ
@ PM77-1 das funktioniert umgekehrt von dem, was gefragt wurde. –
Die ESNexty-Version 'function * numIterator (Wert = 0, Basis = 10) { \t if (Wert) { const digit = Wert% Basis; Fließziffer; yield * numIterator ((Wert-Ziffer)/Basis, Basis); } } '[Demo] (https://jsfiddle.net/394ku240/) –