ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • javascript : 너 정말 배열 맞냐? Array.isArray()
    캡틴 코딩일기/javascript 2020. 2. 2. 22:53
    728x90
    반응형

    javascript : 너 정말 배열 맞냐? Array.isArray()

     

    javascript 기초 개념을 배우고 있는 요즘,

    배열과 객체의 관계에 대해서도 알게 되었다.

    배열은 객체의 한 종류라는 사실.

    실제로 console에서 typeof 연산자를 통해, 배열과 객체의 타입을 확인해 보면

    아래와 같은 결과를 확인 할 수 있다.

    typeof {a:1, b:2} 
    "object" // 객체(object)는 당연히 object. 
    typeof [1,2,3] 
    "object" // 배열(array)이 객체(object)라고?

     

    객체와 배열은 서로를 요소로서 포함 가능하다.

    배열의 element로서 객체가, 객체의 value로서 배열이 할당 될 수 있다.

    자칫 구분이 어려울 수 있는 배열과 객체를 명확하게 구분하여 줄 수 있는

    Array.isArray( ) method에 대해 알아보자.

    객체의 value으로 배열(array)이 할당되어 있을 때, 해당 값을 객체에서 제거하는 문제풀이를 해 보았다.

     

    let obj = { // 객체 내 값(value)에 number, 배열(array), 문자열(string)이 혼재. 
        a: [1, 2, 3], 
        b: 10, 
        c: 'Captain' } 
    removeArrayValues(obj); // 이 함수에 변수로서 위의 객체를 대입하였을 시, 
    console.log(obj); // --> { b: 2, c:'Captain' } // 기대되는 결과값을 상정하였다.

     

    확인 및 삭제의 대상이 되는 요소는 '객체의 value'. 변수로서의 value는,

    bracket notation을 사용한 obj [key]를 통해 확인이 가능하다.

    자, 이제 확인 및 삭제의 기준이 되는 배열(array)인지 아닌지를 판단하기 위해,

    드디어 Array.isArray() method가 등장한다.

    이 method는 boolean값(true or false)를 출력하는 기능을 수행한다.

    method 괄호 안에 판정용 변수를 입력한다.

    실제 위 콘솔창에 입력한 조건을 가지고 함수를 만들어 보면 이렇다.

    (주석에 진행과정을 함께 기재.)

    function removeArrayValues(obj) { // 함수 이름 입력
      for (let key in obj){           // for문(조건문)으로 객체 안의 key를 순차적으로 확인.
        if (Array.isArray(obj[key]) === true){  // if문(조건문)을 통해 obj[key]가 배열인지 확인. 
          delete obj[key];  // Array.isArray() method가 참(true)인 경우에, 해당 값을 삭제.
        console.log('obj', obj)
        }
      return obj; // for문 ~ if문을 통해 해당 값을 삭제한 후, 결과로서의 객체를 리턴 해 준다.
      } 
    }
    
    removeArrayValues({   
      a: [1, 2, 3],
      b: 10,
      c: 'Captain'
    })
    VM1924:5 obj {b: 10, c: "Captain"}b: 10c: "Captain"__proto__: Object
    {b: 10, c: "Captain"}b: 10c: "Captain"__proto__: Object

     

    위 진행과정에서 Array.isArray() method는 참 또는 거짓으로 판정 값을 출력하여,

    다음 if문에서 처리하여야 할(= 삭제처리하여야 할) 대상을 정하는 전제값을 정해주는 역할을 수행한다.

     * 5번째 줄에는, console.log()명령어를 입력하여, 객체 내 value가 순차적으로

        확인 / 처리되는 과정에 결과를 순차적으로 확인 할 수 있도록 코드를 구성해 보았다.

    해당 method는 객체 및 배열의 활용에 요긴하게 사용 될 것 같아서 스스로 개념을 정리하는

    차원에서 문제풀이 과정과 함께 정리를 해 보았다.

    728x90
    반응형

    댓글

Designed by Tistory.