コードテスト練習33:[プログラマー]起動パスワード



ソース:プログラマ 使用言語:JavaScript

イニシャルコード

function solution(s, n) {
    var answer = '';
    return answer;
}

私が書いたコード

function solution(s, n) {
    let answer = [];
    let alphabet;
    let arr=[];
    
    const upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    const lower = 'abcdefghijklmnopqrstuvwxyz';
    
    const upLo= upper.concat(upper).split("");
    const loUp= lower.concat(lower).split("");
    

    alphabet=s.split("")
    
    for(let i=0;i<alphabet.length;i++){

        let alpha = alphabet[i];
       
        if(alpha===" "){
            arr.push(" ")
            
        }else if(alpha===alpha.toUpperCase()){
            
            let num1=upLo.indexOf(alpha);
            arr.push(upLo[num1+n]);
            
        }else if(alpha===alpha.toLowerCase()){
            let num2=loUp.indexOf(alpha);
            arr.push(loUp[num2+n]);
            
        }
        
    }
    answer=arr.join("")
    return answer;
}
    

他人を解く

function solution(s, n) {
    var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var lower = "abcdefghijklmnopqrstuvwxyz";
    var answer= '';

    for(var i =0; i <s.length; i++){
        var text = s[i];
        if(text == ' ') {
            answer += ' '; 
            continue;
        }
        var textArr = upper.includes(text) ? upper : lower;
        var index = textArr.indexOf(text)+n;
        if(index >= textArr.length) index -= textArr.length;
        answer += textArr[index];
    }
    return answer;
}

🙍‍♀️ 📝


3つの演算子でもっと簡単に解くことができます!
次の項目を区別します。 indexOf() Stringオブジェクトまたは配列内の指定した値に一致する最初のインデックスを返します。 一致する値がない場合は、-1を返します。 パラメータに値がない場合は、検索する文字列として文字列「undefined」が使用されます。 右に順番に並ぶ。 lastIndexOf() fromIndexから所定の値に一致する部分に逆方向に移動し、最初の相対インデックスを返します。 一致する部分が見つからない場合は、-1を返します。 パラメータにNull値を指定すると、fromIndexが返されます。 findIndex() 指定された判別関数の最初の要素を満たすインデックスを返します。 満足できる要素がない場合は、-1を返します。 コールバック関数がtrueを返すまで、配列内のすべての配列インデックス0。length-1(含む)はコールバック関数を実行します。 これらの要素が見つかった場合、findIndexはすぐに重複するインデックスを返します。 配列に存在しないエントリのインデックスにコールバックを呼び出します。