JavaScript|オブジェクト

16763 ワード

1.概念


1.1オブジェクトの構造

let memberObject = {
    manager : 'kyeongi',
    developer : 'suri',
    designer: 'masuri',
    ["data scientist"] : 'haru'
}
  • オブジェクトのデータは、鍵(key)と値(value)のペアからなる.属性(property)という言葉は、キー値のペアを表します.
  • キーと値は:コロンで区切られ、対は,カンマで区切られ、データ全体は{}カッコで囲まれている.
  • 値には、異なるタイプのデータが含まれる場合があります.
  • 1.2オブジェクトの特徴


    一人の情報を含むために様々な変数が必要であると仮定します.配列はデータを順番にリストするだけで、各要素に何の意味があるか分かりません.この場合、オブジェクトを使用できます.
    配列内の要素には、インデックスで値にアクセスする順序があり、オブジェクトの値には意味があり、キーで値にアクセスします.

    実際の生活例


    大量の情報を含む使い捨て処理に使用されます.
  • SNS投稿を時間順に整理した場合:並べ替え
  • 投稿に複数のデータが含まれている場合:オブジェクト(有意義)
  • オブジェクトを要素とする配列=>この2つの配列を同時に使用!
  • 1.3オブジェクトの属性C-R-U-D

    memberObject.singer = 'junga' // 추가
    memberObject.designer = 'musuri' // 변경
    delete memberObject.developer; // 삭제
    console.log(memberObject.designer); // 조회
    console.log(memberObject["developer"]); // 조회 - 삭제 되어 undefined (객체에 없는 키를 조회하면 undefined 리턴)
  • in演算子は、オブジェクトにキーがあるかどうかをboolean値で表示します
  • let isPresent = 'developer' in memberObject; // false
    let hasProperty = 'singer' in memberObject; // true

    Dot notation vs Bracket notation


    オブジェクトのプロパティをクエリーする方法は2つあります.実は「制御」のほうが正確だと思います.
  • dot notation:近接点..
  • bracket notation:四角カッコ[]でアクセスします.
  • back/二重引用符/二重引用符は文字列として入れる必要があります.これにより、属性の鍵として認識できます.
  • 文字列として入れない場合は変数として扱います.
  • 宣言されていない変数について、取得されていない参照エラーを表示
  • brackt notationは、キー値が変化した場合に使用する必要がある場合があります.
  • プロパティのキーをパラメータとして入力するには、Stringタイプではなくカッコ内に変数を入れるだけです.ref. ko1
  • 1.4オブジェクトと繰り返し文


    オブジェクトに重複文を適用して、大量の情報を処理できます.オブジェクトは無秩序なため、ゼロから始まる重複文インデックスは使用できません.

    for ... in


    for in構文でオブジェクトのすべてのキーにアクセスおよび出力できます.
    for (let key in memberObject) {
        console.log(`${key} : ${memberObject[key]}`);
    }
    function extend(obj1, obj2) {
       for (let key in obj2) {
        if (!(key in obj1)) {
          obj1[key] = obj2[key];
        }
      }
    }
  • obj 1にobj 2のキーを付けて延長しようとするとif文で使用される構文を考慮することができます.首都コードに変更すると、「obj 2のキーがobj 1のキーにない場合」です.
  • for ... of


    stringやarray、類似配列などで使用できる重複文.

    how to iterate objects

  • Object.keys():オブジェクトキーを要素とする配列を作成
  • Object.values():オブジェクト値を要素とする配列を作成
  • Object.entries():オブジェクトのキーと値のペアを要素とする二重配列を作成
  • 2.エラーログ


    キーの名前が変更された場合は変数として挿入し、名前が指定されている場合は文字列として挿入します。(k1, k10)

  • うっかりしました.それを変数として拍子ノイズに入れますか、文字列に入れますか.キーの値は考慮しないでください.
  • 存在しない鍵を呼び出すと、Undefinedが表示されます.
  • オブジェクトをオブジェクトのキー値として再挿入することもできます。(k4)


    if(true)を望む場合は、同治演算子を省略できます。(k7)


    キー値をクエリーするobjを忘れないでください[key]

    function removeArrayValues(obj) {
      for (let key in obj) {
        if (Array.isArray(obj[key])) {
          delete obj[key];
        }
      }
    }
  • クエリ値が配列であるか否かでkeyが確認され、deleteキーワードでkeyのみが書かれている.鍵の値を削除する必要があります!
  • '3' % 2 === 1 // true '3' > 1 // true (k8, k11)

  • 文字の大きさの比較は辞書式です.'123' < '2'//true
  • 残りの演算子を使用すると、文字列の数値も数値のように値を与えます.
  • typeofは文字列タイプの値を返します.
  • template literalで改行文字を使用する方法(k 13)

  • `n`はそのままハンドルに入れておけばいいです.
  • インデックスが配列の長さより大きい場合はundefinedが返されます。(k14)

  • コードは不要な条件を使用しています.
  • deleteキーを使用して、元のオブジェクトを変更します。(k15)

  • for inとfor of.
  • in演算子を使用すると、配列内の要素elがオブジェクトのキーであるかどうかをすぐに判断でき、不要なコード行が追加されます.
  • if (el in obj) // el이라는 key가 obj에 있는지 불리언 타입으로 내준다.

    オブジェクトは配列内の要素としても表示されます。

  • 配列内の要素でオブジェクト属性をクエリーする方法はよく知られていませんが、可能です.arr[index].property
  • in演算子は、ブールタイプを返します。


    20日

    function countAllCharacters(str) {
    
    let obj = {};
    let arr = str.split('');
    
    for (let el of arr) {
      if (obj[el] === undefined) {
        obj[el] = 0
      } 
      obj[el]++; 
      // 처음에 obj[el] = 0으로 시작을 하고 1을 더한다. 만약에 이미 있는 키라면 undefined가 아니므로 초기화가 안 되고 1이 더해진다! 
    }
    return obj;  
    }
  • オブジェクトのキーがない場合はundefinedなので、初期設定を0にする方法を考えていましたが、何か考えがあるようです!
  • obj[el]++.
  • objでelをキーとして+1を追加します.そうしないと、1を追加する方法で1を追加します.
  • JavaScriptから文字列のスペースを削除します。

  • str = str.split(" ").join("");この行は簡単です!
  • 21日

    function mostFrequentCharacter(str) {
      let obj = { mostCount: 0, mostFrequent: '' };
      for (let i = 0; i < str.length; i++) {
        if (str[i] === ' ') {
          continue;
        }
    
        if (obj[str[i]] === undefined) {
          obj[str[i]] = 0;
        }
        obj[str[i]] += 1;
    
        if (obj[str[i]] > obj['mostCount']) {
          obj['mostCount'] = obj[str[i]];
          obj['mostFrequent'] = str[i];
        }
      }
      return obj['mostFrequent'];
    }
  • コードを転送するように、重複文で同時に見つけた場合は?どうして私は别に探して更に苦労しますか?
  • スペースも字のように数えます!
  • breakとcontinueの違い

  • continueは、現在の繰り返しで実行を終了し、繰り返し文の最初の回数を返します.
  • breakは現在、重複文を終了しています.
  • 20, 21

    3.質問

  • propertyとkeyは同じではないでしょうか.身長と値段を合わせた場合ですか?
  • Q.配列とオブジェクトを変数に入れる場合、constとletの違いは何ですか?
    letとconstの違いは変数が変わらないかどうかです.letは変数を再割り当てできますが、constは変数を再宣言したり、変数を再割り当てしたりすることはできません.letは、値を割り当てる前に変数を宣言する必要がありますが、そうではありません.そのため、エラーが発生しました.
  • ただし、元のアレイを変更する方法は使用できます.