JavaScriptで数字を文字に変換する
ユーザーがユーザーを一意に識別するために一意のユーザーIDを提供する必要があるログインシステムがあるとします。また、明らかなセキュリティ上の理由から、userIDを難読化して、番号を推測するのがかなり困難になるようにします。
基本的に、2つの関数を作成する必要があります。
-
encode()、
-
decode()
最初の関数は、入力された数値をベース26のアルファベットマッピングに変換する必要があります。そして、2番目の関数はアルファベットマッピングを元の数値に変換する必要があります。
ほとんどのハッシュアルゴリズムは変換を行ったり来たりしないため、これはあまり実用的ではありませんが、この質問の目的のために、それを考慮していません。
例-番号が31の場合、
encode(31) = 'ea' and, decode('ea') = 31
例
このためのコードは-
になりますconst num = 31; const encode = num => { let res = ''; const legend = 'zabcdefghijklmnopqrstuvwxy'; while(num){ const rem = num % (legend.length); res += legend[rem]; num = (Math.floor(num / legend.length)); }; return res; }; const decode = str => { let num = 0; const legend = 'zabcdefghijklmnopqrstuvwxy'; for(let i = 0; i < str.length; i++){ const ind = legend.indexOf(str[i]); num += (ind * Math.pow(legend.length, i)); }; return num; } console.log(encode(num)); console.log(decode('ea'));
出力
そして、コンソールの出力は-
になりますea 31
-
JavaScriptの数値の最大桁
数値を受け取り、数値の最大桁を返すJavaScript再帰関数を作成する必要があります。 例:番号が45654356の場合 その場合、戻り値は6になります 例 このためのコードは-になります const num = 45654356; const greatestDigit = (num = 0, greatest = 0) => { if(num){ const max = Math.max(num % 10, greatest); return greatestDigi
-
JavaScriptで数値を因数分解する
引数として正の整数をとるJavaScript関数を作成する必要があります。関数は、入力された数値を正確に除算するすべての数値の配列を作成して返す必要があります。 例- 入力番号が-の場合 const num = 12; その場合、出力は-になります。 const output = [1, 2, 3, 4, 6, 12]; 例 以下はコードです- const findFactors = (num = 1) => { let half = Math.floor(num / 2); const res = [1]; // 1 wil