[javascript] 12-08 p.w.js.part2 javascript study

2021-12-08

12-08 (수)

  1. for .. in 문

    “integer property” 는 string 으로 바꿔도, number 로 바꿔도 동일한 값일 때, 숫자순서대로 정렬이 됀다.

     // Math.trunc is a built-in function that removes the decimal part
     alert( String(Math.trunc(Number("49"))) ); // "49", same, integer property
     alert( String(Math.trunc(Number("+49"))) ); // "49", not same "+49" ⇒ not integer property
     alert( String(Math.trunc(Number("1.2"))) ); // "1", not same "1.2" ⇒ not integer property
     </script>
    

    반면에, key가 정수형이 아닐 때, 생성순으로 정렬이 된다.

     let user = {
       name: "John",
       surname: "Smith"
     };
     user.age = 25; // add one more
        
     // non-integer properties are listed in the creation order
     for (let prop in user) {
       alert( prop ); // name, surname, age
     }
    

    그래서 국가코드와 같은 문제를 의도했던 정렬대로 하기 위해서는 속임수를 쓰는데, integer형이 아닌 non-integer 형태로 하면 된다. 각 국가코드의 맨 앞에 "+" 기호를 붙히면 작동한다.

     let codes = {
       "+49": "Germany",
       "+41": "Switzerland",
       "+44": "Great Britain",
       // ..,
       "+1": "USA"
     };
        
     for (let code in codes) {
       alert( +code ); // 49, 41, 44, 1
     }