221125 항해99 19일차 유사배열과 배열의 차이
- 자바스크립트에서 유사배열과 배열의 차이는 무엇일까요? 유사배열의 각 요소를 수정하고 싶다면 어떤 과정을 거쳐야할까요?
- 유사 배열은 array-like objects, 즉 객체이다.
- 유사 객체 배열은 배열처럼 보이지만 사실 key가 숫자이고, length 값을 가지고 있는 객체를 말한다.
- 유사배열은 함수에서 처리 결과로 배열을 반환하고 싶을때 또는, Array에서 기본으로 내포되어있는 기능을 제공하고 싶지 않거나 Array에 내포되어있지 않은 기능을 제공하고 싶을때 사용한다.
- 유사배열을 사용하기 위한 최소한의 조건은 1) '숫자 형태의 indexing이 가능할 것' 2) 'length 속성을 포함할 것'이다.
- querySelectorAll으로 가져오는 NodeList, document.body.children으로 가져오는 HTMLCollection, 함수의 arguments 등이 유사 배열 객체에 담겨서 온다.
- 유사 배열 객체는 배열의 forEach, map, filter, reduce 같은 메소드를 사용할 수 없다. 사용하고 싶다면 Array.from() 메소드를 활용하면 된다.
- Array.from() 메소드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만든다. 유사 배열 객체에 있는 value를 복사해 배열로 만드는 것이다.
- Array.prototype.slice.call() 메소드로도 유사 배열 객체를 배열로 만들 수 있다.
- 유사배열의 각 요소를 사용하고 싶다면 위의 메소드들을 활용해 새로운 배열을 만들어 배열 메소드를 사용해 수정할 수 있다.