桁数の和


code

function solution(n, arr){
                let answer, max=Number.MIN_SAFE_INTEGER;
                for(let x of arr){
                    let sum=x.toString().split('').reduce((a, b)=>a+Number(b), 0);
                    if(sum>max){
                        max=sum;
                        answer=x;
                    }
                    else if(sum===max){
                        if(x>answer) answer=x;
                    }
                }
                return answer;
            }            
            let arr=[128, 460, 603, 40, 521, 137, 123];
            console.log(solution(7, arr));

知るところ


1. Number.toString


#数値を文字列に変換(number to string)
1.(数値).toString()
(111).toString()//"111"
(NaN).toString()//"NaN"

  • String(数値)
    newなしでString構造関数を使用する方法
    (111).toString()//"111"
    (NaN).toString()//"NaN"

  • 数字+”
    :文字列接続演算子(+)の使用方法.引用符で囲まれた空の文字列を加えると、変形が発生します.
    111 + ""//"111"
    NaN + ""//"NaN"
  • 2.mapとreduce


    2. map


    #フォーマット:配列.map((要素、インデックス、配列)=>{return要素});
    #繰り返されるドアの回りに、配列中の要素を1対1でペアリングします.
    定義した関数をメソッドのパラメータとして入れればよい.
    const number = [1, 2, 3];
    let result = number.map((v) => {
    return v + 1;
    });
    result;//[2, 3, 4]
    上でv=1,2,3をループします.

    地図を利用して


    const number = [1, 2, 3]
    let result = number.map((v) => {
    console.log(v%2?ホール:“ペアリング”);
    });
    console.log(result);//'ホール

    3. reduce


    #フォーマット:配列.reduce((累積値、グレー値、インデックス、要素)=>{結果を返し、初期値);
    以前の値ではなく累積値に注意!!!
  • 加算例
    const number = [1, 2, 3];
    result = number.reduce((acc, cur, i) => {
    console.log(acc, cur i);
    return acc + cur;
    }, 0);
    //0 1 0
    //1 2 1
    //3 3 2
    result;//6
    初期値が記入されていない場合、accの番号は自動的に0から始まります.
  • reduceの使用


    result = number.reduce((acc, cur) => {
    acc.push(cur%2?「奇数」:「偶数」);
    return acc;
    }, []);
    result;//[『奇数』『偶数』『奇数』]

    問題でのreduceの使用


    let sum=x.toString().split('').reduce((a, b)=>a+Number(b), 0);
    a(acc)の値を0に初期化した後、String bをNumberに変換し、aに+累積を加える.