1. 배열의 고차함수의 특징을 함수형 프로그래밍 관점에서 설명해주세요.

함수형 프로그래밍은 순수 함수를 통해 부수 효과를 억제하고 데이터의 불변성을 지향하는 패러다임이다. 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피함.

배열 고차함수는 함수형 프로그래밍의 특징을 잘 반영한다.


  1. 배열의 메소드는 mutator method와 accessor method로 분류할 수 있습니다. 둘 중 권장되는 방법과 이유는 무엇인가요?

mutator method - 원본 배열을 직접 변경하는 메서드

accessor method - 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드

함수형 프로그래밍은 데이터의 불변성을 중시한다. 따라서 가급적 새로운 배열을 반환하는 accessor method 를 권장한다.

또한 원본 배열을 직접 변경하는 mutator method의 경우 외부 상태를 직접 변경하는 부수 효과가 있어서 사용시 주의가 필요


  1. 배열의 고차함수 reduce에 대한 설명과 유의할 점은 무엇이며, 사용되는 용례에 대해 얘기해주세요.

    자신을 호출한 배열을 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다. 그리고 콜백 함수의 반환값을 다음 순회 시에 콜백 함수의 첫번째 인수로 전달하면서 콜백 함수를 호출하여 하나의 결과값을 만들어 반환한다. 이때 원본 배열은 변경되지 않음.

    ( 배열을 순회하며 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환합니다.)

    주의사항) reduce 메서드를 호출할 때는 언제나 초기값을 전달하는 것이 안전하다. 빈 배열로 reduce메서드를 호출하면 에러가 발생. 이때 초기값을 전달하면 에러가 발생하지 않음.

    reduce메서드는 자신을 호출한 배열의 모든 요소를 순회하며 하나의 결과값을 구할 때 유용하게 사용할 수 있다.


  2. 자료구조의 배열과 비교했을 때, 자바스크립트의 배열이 갖는 특징은 무엇인가요?

    일반적인 자료구에서 말하는 배열은 각 요소가 동일한 데이터 크기를 가지며, 연속적으로 이어져 있는 *밀집 배열 구조이다.

    But, 자바스크립트의 배열은 일반적인 배열과 달리 배열의 요소가 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있다.(희소배열) 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체다.


  1. 배열을 생성하는 방법에 대해 열거하고, 희소배열이 권장되지 않는 이유를 설명해주세요.

    희소배열은 연속적인 값의 집합이라는 배열의 기본적인 개념과 맞지 않으며, 성능에도 좋지 않은 영향을 주므로 배열을 생성할 경우 희소 배열을 생성하지 않도록 주의


  1. 배열의 요소를 삭제하는 방법으로 delete 연산자와 slice 메서드의 차이점은 무엇이며, 어떤 방법이 배열의 관점에서 적절한가요?

delete연산자는 희소배열을 생성하므로 배열 관점에서는 slice메서드가 적절하다.