コードチェックによるES 6オブジェクトと配列構文(展開演算子、非構造化)

41373 ワード

  • ショートカット属性名を使用してオブジェクトを作成します.
  • const name = 'mike';
    const obj = {
    	age: 21,
      	name, 
     // 새로 만들려는 객체의 속성값 일부가 이미 변수로 존재하면 간단하게 변수 이름만 적어 준다.
      	getName() { return this.name }, 
      //속성값이 함수이면 function 키워드 없이 함수명만 적어도 된다.
    };
  • ショートカット属性名を使用しないコードと使用するコードを比較する
  • .
    function makePerson1 (age, name) {
    	return { age:age, name: name };
    }
    function makePerson2 (age, name) {
    	return { age, name }
    }
  • コンソールログ出力ショートカット属性名
  • を使用
    const name = 'mike';
    const age = 21;
    console.log('name =', name, ', age =', age); // name = mike, age = 21 
    console.log({ name, age }); // { name: 'mike', age: 21 }
  • で計算する未使用属性名のコードは、使用するコードと比較する
  • である.
    function makeObject1(key, value) {
    	const obj = {};
      	obj[key] = value;
      	return obj;
    }
    function makeObject2(key, value){
    	return { [key]: value };
    }
    計算されたアトリビュート名を使用して、構成部品の臍帯値を変更します.
    class MyComponent extends React.Component {
    	state = {
    		count1: 0,
          	count2: 0,
          	count3: 0,
    };
    // ...
    onClick = index => {
    	const key = `count${index}`;
      	const value = this.state[key];
      	this.setState({ [key]: value + 1 });
    	};
    }
    
    // 리액트 클래스 문법 공부 시 다시 확인하기.
  • を使用して演算子入力関数を展開するパラメータ
  • Math.max(1, 3, 7, 9); // 동적으로 매개변수 전달 X
    const numbers = [1, 3, 7, 9];
    Math.max(...numbers); // 동적으로 매개변수 전달 O
    // 9 , 일반 배열을  Math.max에 넣으면 NaN이 출력
  • apply関数を使用して関数のパラメータを動的に入力
    △書くのが面倒で、操作性も悪い.
  • const numbers = [-1, 5, 11, 3];
    Math.max.apply(null, numbers); // 11
    //가독성이 떨어지므로, rest파라미터를 사용하는 Math.max(...numbers)를 사용하자.
    24.展開演算子を使用して配列とオブジェクトをコピーする
    const arr1 = [1, 2, 3];
    const obj1 = { age: 23, name: 'mike' };
    const arr2 = [...arr1];
    const obj2 = { ...obj1 };
    arr2.push(4); // [1, 2, 3, 4] 원래 배열 영향 X
    obj2.age = 80; // { age; 80, name: 'mike' } 원래 객체 영향X
  • 配列で展開演算子を使用すると、順序を維持できます.
  • [1, ...[2, 3], 4]; // [1, 2, 3, 4]
    new Date (...[2020, 6, 24]); // 2020년 6월 24일
  • を使用して演算子を展開し、2つのオブジェクト
  • をマージします.
    const obj1 = { age: 21, name: 'mike'};
    const obj2 = { hobby: 'soccer' };
    const obj3 = { ...obj1, ...obj2 }
    console.log(obj3); // { age: 21, name: 'mike', hobby: 'soccer' }
  • のオブジェクト文字に重複属性名
  • を使用することができる.
    const obj1 = { x: 1, x: 2, y: 'a' }; // {x: 2, y: 'a'}
    const obj2 = { ...obj1, y: 'b' }; // { x: 2, y: 'b'}
    28.const非構造化の単純コード
    const arr = [1, 2];
    const [a, b] = arr;
    console.log(a); // 1
    console.log(b); // 2
  • は、既存の変数付与値
  • として非構造的に配列する.
    let a, b;
    [a, b] = [1, 2];
  • 非構造アレイのデフォルト値
  • const arr= [1];
    const [a= 10, b= 20] = arr
    console.log(a); // 1
    console.log(b); // 20
    最初の変数の属性値が存在するため、属性値はそのまま割り当てられます.
    2番目の変数の属性値は定義されていないため、デフォルト値20が割り当てられます.
    31.非構造化配列を用いて2つの変数の値を交換する
    let a = 1;
    let b = 2;
    [a, b] = [b, a];
    console.log(a); // 2
    console.log(b); // 1
    32.カンマを使用して特定の属性値をスキップ
    const arr = [1, 2, 3];
    const [a, , c] = arr;
    console.log(a); // 1
    console.log(c); // 3
    残りの値
  • を別の配列
  • とする.
    const arr = [1, 2, 3];
    const [first, ...rest1] = arr;
    console.log(rest1); // [2, 3]
    const [a, b, c, ...rest2] = arr;
    console.log(rest2); // []
  • オブジェクト非構造化の簡単な例
  • const obj = { age: 21, name: 'mike' }
    const { age, name } = obj;
    console.log(age); // 21
    console.log(name); // mike
    35.客体非構造化では、属性名が重要である.
    const obj = { age: 21, name: 'mike' }
    const { age, name } = obj; 
    const { name, age } = obj;
    const { a, b } = obj;
    オブジェクトの非構造化では,順序は無意味であるため,a,bの結果値は同じである.
    オブジェクト非構造化における別名
  • の使用
    const obj = { age: 21, name: 'mike' }
    const { age: theAge, name } = obj;
    console.log(theAge); // 21
    console.log(age); // 참조 에러
  • オブジェクト非構造化のデフォルト値
  • const obj = { age: undefined, name: null, grade: 'A' }
    const { age = 0, name = 'noName', grade = 'F' } = obj;
    console.log(age); // 0
    console.log(name); // null
    console.log(grade); // A
    ageはundefinedなので、デフォルト値に入ります.
    nameのプロパティ値はnullなので、デフォルト値は含まれません.
  • デフォルト値とエイリアスは
  • を同時に使用します.
    const obj = { age: undefined, name: 'mike' }
    const { age: theAge = 0, name } = obj;
    console.log(theAge); // 0
  • 関数のデフォルト値
  • function getDefaultAge() {
    	console.log('hello');
      	return 0;
    }
    const obj = { age: 21, grade: 'A' };
    const { age= getDefaultAge(), grade } = obj; // hello출력 되지 않음.
    console.log(age); // 21 
    40.オブジェクトの非構造化において、個別のオブジェクトとして他の属性を作成します.
    const obj = { age: 21, name: 'mike', grade: 'A' }
    const { age, ...rest } = obj;
    console.log(rest); // { name: 'mike', grade: 'A' }
  • for文におけるオブジェクト非構造化の使用例
  • const people = [{ age: 21, name: 'mike' }, { age: 51, name: 'sara'}]
    for (const { age, name } of people )
      // ...
  • 非構造化ネストオブジェクトを使用する例
  • const obj = { name: 'mike', mother: { name: 'sara' } };
    const {
    	name,
      	mother: { name: motherName },
    	} = obj;
    console.log(name); // mike
    console.log(motherName); // sara
    console.log(mother); // 참조 에러
  • のデフォルト値は、変数単位ではなくモード単位に適用されます.
  • const [{ prop: x } = { prop: 123 } ] = [];
    console.log(x); // 123
    const [{ prop: x } = { prop: 123 } ] = [{}];
    console.log(x); // undefined
    最初のコードの{prop:x}は、配列の最初の要素を指します.{prop:123}はデフォルト値を定義します.最初の要素が存在しないため、デフォルト値が割り当てられます.
    2番目の配列の最初の要素が存在するため、デフォルト値は指定されません.最初の要素にはpropという属性名が存在しないため、xにundefinedを指定します.
  • オブジェクトの非構造化によって計算する属性名
  • を使用する.
    const index = 1;
    const { [`key${index}`]: valueOftheIndex } = { key1: 123 };
    console.log(valueOftheIndex); // 123
  • 別名を使用して、属性値
  • を他のオブジェクトおよび配列に割り当てます.
    const obj = {};
    const arr = [];
    ({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });
    console.log(obj); // {prop: 123}
    console.log(arr); // [true]