第2週-3配列、オブジェクト


整列


mutable vs immutable


  • かへんかんすう
    splice
    sort
    reverse
    push/pop
    shift/unshift

  • ふへんかんすう
    filter
    map
    slice
  • オブジェクト


    オブジェクトの読み取りと書き込み


    .(ピリオド)演算子

    let user = {
      name: "John",
      age: 30
    };
    
    user.name // => "John"

    []角カッコ演算子


    静的鍵に近づくには、「」でバインドする必要があります.
    user["name"] // => "John"
    動的鍵にアクセスできるのはカッコ演算子のみです.
    function(obj, key){
      return obj[key] //--> key가 동적으로 변하기 때문에 대괄호로 묶어준다.
      // [x] obj.key  / obj["key"]
    }
    
    let result = fun(obj, key)

    Object.keys, values, entries. fromEntries


  • Object.keys(obj)-オブジェクトキーのみを含む配列を返します

  • Object.values(obj)-オブジェクト値のみを含む配列を返します.

  • Object.entries(obj)-キー、値のペアを含む配列を返します.
  • let user = {
      name: "John",
      age: 30
    };
    
    Object.keys(user) = ["name", "age"]
    Object.values(user) = ["John", 30]
    Object.entries(user) = [ ["name","John"], ["age",30] ]
  • Object.fromEntry(arr)-配列をオブジェクト
  • に戻します.
    const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
    const obj = Object.fromEntries(arr);
    console.log(obj); // { 0: "a", 1: "b", 2: "c" }

    オブジェクトの変換


    オブジェクトはmap、filterメソッドを使用できません.したがって、エンティティを使用して配列を取得し、mapを使用し、fromEntriesを使用してオブジェクトとして再作成できます.
  • Object.entries
  • Object.fromEntries
  • Object.entries(obj)を使用して、オブジェクトのキー値ペアが要素の配列であることを取得します.
  • 1.アレイ固有のメソッド(mapなど)を、で作成したアレイに適用します.
  • 2.返される配列内のオブジェクト.fromEntry(array)を適用して配列をオブジェクトに返します.
  • let prices = {
      banana: 1,
      orange: 2,
      meat: 4,
    };
    
    let doublePrices = Object.fromEntries(
      // 객체를 배열로 변환해서 배열 전용 메서드인 map을 적용하고 fromEntries를 사용해 배열을 다시 객체로 되돌립니다.
      Object.entries(prices).map(([key, value]) => [key, value * 2])
    );
    
    console.log(doublePrices.meat); // 8

    浅い放射

    const obj = {
      a: "하나",
      b: {
        c: "둘",
      },
    };
    
    const copiedObj = Object.assign({}, obj);
    
    obj === copiedObj // false
    
    obj.a = "하나하나"
    obj.a === copiedObj.a // false
    
    copiedObj.b.c = "둘둘"
    obj.b.c === copiedObj.b.c // true
    Object.assign()は浅い放射線になる.
    したがって、オブジェクト内のオブジェクトは同じ参照値を有するため、objのbのcの値を変更すると、copiedobjのbのcも同じ変更値を有する.
    つまり、参照値は最も外側の参照値とは異なり、オブジェクト内の参照値は同じ参照値を有します.