TIL 11最初のJS配列、オブジェクトテンプレート、ペア😌


開始します。


今日はCOPLETをメインに行いますが、他の目標はありません.そこで、COPLETで苦手な部分やチラシを中心に宣伝していきたいと思います.

配列を新しいアドレスにコピー

arr = [1, 2, 3];
// 배열의 주소를 복사했기 때문에 같은 메모리를 바라본다.
arrSoftCopy = arr;
// 새로운 배열을 만들고 복사했기 때문에 다른 메모리를 바라본다. 
arrDeepCopy = arr.slice();
// 테스트 
arrSoftCopy.pop()
console.log(arr) // 1, 2
console.log(arrSoftCopy) // 1, 2
console.log(arrDeepCopy) // 1, 2, 3
slice関数が伝達因子を提供しない場合は、新しい配列に直接コピーします.この技法はこれからよく使う湯飯のような技法ではないでしょうか.
新しい配列を作成するimmator関数も含まれており、さまざまな方法が使用できるようです.

Objectですか、Arrayですか。


typeOf関数を使用してオブジェクトと配列をチェックすると、両方がobjectとして表示されます.配列についてはArray.isArray()の方法で区別できるが、Object.isObject()のオブジェクトを持つ方法はない.
両者を区別できないかどうかを探ると,constructorメソッドが正しく割り当てられていることが分かった.でも探してみたら、まだ専門のタイプや等級を習ったことがないので、整理が大げさです.マークをしてから戻ってみましょう
constructor
コンストラクション関数メソッドは、クラス内でオブジェクトを作成および初期化する特別な方法です.
MDN constructor

後に索引を作成


これは24番のコプリットの電話番号を生成する問題です.これはスプレッドシートからの内容で、電話番号の前の位置があるかどうかによって、処理方法が異なります.私は前からインデックスを作成しifゲートに分けて行います.この方式の欠点は、上位が8または11であっても10であってもよいことである.たとえば、02で始まる番号かもしれません.
これらの欠点や複雑さをきれいにするには、変数を減らせばいいのです.前の位置が変化し続ける可能性があれば、このように後を基準に考えることができます.arr.slice (array.length - 8, array.length -4)技術的にはたいした内容ではありませんが、私の思いつかないやり方なので斬新に記録しています.これらに慣れたら、あなたは達人になります.
また,この問題はjoin関数で前回のTILでは扱いにくい資料型配列を文字列に修正すれば簡単に解決できることを記録している.2回で問題を全部メモする.

createPhoneNumber


  • 質問する
    0~9の整数の配列を要素として入力し、電話番号形式の文字列を返します.

  • 入力
    パラメータ1:arr
    numberタイプを要素とする配列
    arr[i]は0または9以下の整数である
    アレイの長さは8または11です.

  • しゅつりょく
    stringタイプを返さなければなりません.
    注意事項
    重複文(for,while)の使用を禁止します.
    配列長が8の場合、前に[0,1,0]があると仮定します.
  • function createPhoneNumber(arr) {
      // TODO: 여기에 코드를 작성합니다.
      // let phoneNumber = [];
      // if (arr.length === 8) {
      //   phoneNumber = ['(',0,1,0,')'];
      // } else {
      //   phoneNumber.push('(');
      //   phoneNumber = phoneNumber.concat(arr.slice(0,3));
      //   phoneNumber.push(')');
      //   arr.splice(0,3);
      // }
      
      // phoneNumber = phoneNumber.concat(arr.slice(0,4));
      // phoneNumber.push('-');
      // phoneNumber = phoneNumber.concat(arr.slice(4,8));
      // return phoneNumber.join('');
      
      let phoneNumber = '';
      phoneNumber = arr.join('');
      if (phoneNumber.length === 8) {
        // 템플릿 리터럴 쓰면 더 깔끔함.
        phoneNumber = '(010)' + phoneNumber.slice(0,4) + '-' + phoneNumber.slice(4);
      } else {
        phoneNumber = '(' + phoneNumber.slice(0,3) + ')' + phoneNumber.slice(3, 7) + '-' + phoneNumber.slice(7);
      }
      return phoneNumber;
    }

    公平である


    ありがたいことに、本当に良いパートナーが一緒に重要な良い部分を完成しました.いっしょに討論を行って、問題を解決して、最適化する部分、また思いがけない部分を理解して、これは1つの楽しくて有益な経験です.このような共鳴を生み出す部分は,一人で符号化を学ぶことと大きく異なる.実力に差があれば、自分の考えで相手に説明し、自分の概念もより強固になります.これは一方通行の得がたい部分です.CODE STARZ愛してる😘

    役立つリンク


    mutate,mutate関数リスト
    Does it mutate?
    アゴラでは、エンジニアが返信した内容に役に立つ文章があります.後で見ましょう.
    JavaScriptで[objectObject]とは何ですか?