함수형 프로그래밍은 순수 함수를 통해 부수 효과를 억제하고 데이터의 불변성을 지향하는 패러다임이다. 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피함.
배열 고차함수는 함수형 프로그래밍의 특징을 잘 반영한다.
mutator method - 원본 배열을 직접 변경하는 메서드
accessor method - 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드
함수형 프로그래밍은 데이터의 불변성을 중시한다. 따라서 가급적 새로운 배열을 반환하는 accessor method 를 권장한다.
또한 원본 배열을 직접 변경하는 mutator method의 경우 외부 상태를 직접 변경하는 부수 효과가 있어서 사용시 주의가 필요
배열의 고차함수 reduce에 대한 설명과 유의할 점은 무엇이며, 사용되는 용례에 대해 얘기해주세요.
자신을 호출한 배열을 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다. 그리고 콜백 함수의 반환값을 다음 순회 시에 콜백 함수의 첫번째 인수로 전달하면서 콜백 함수를 호출하여 하나의 결과값을 만들어 반환한다. 이때 원본 배열은 변경되지 않음.
( 배열을 순회하며 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환합니다.)
주의사항) reduce 메서드를 호출할 때는 언제나 초기값을 전달하는 것이 안전하다. 빈 배열로 reduce메서드를 호출하면 에러가 발생. 이때 초기값을 전달하면 에러가 발생하지 않음.
reduce메서드는 자신을 호출한 배열의 모든 요소를 순회하며 하나의 결과값을 구할 때 유용하게 사용할 수 있다.
자료구조의 배열과 비교했을 때, 자바스크립트의 배열이 갖는 특징은 무엇인가요?
일반적인 자료구에서 말하는 배열은 각 요소가 동일한 데이터 크기를 가지며, 연속적으로 이어져 있는 *밀집 배열 구조이다.
But, 자바스크립트의 배열은 일반적인 배열과 달리 배열의 요소가 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있다.(희소배열) 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체다.
배열을 생성하는 방법에 대해 열거하고, 희소배열이 권장되지 않는 이유를 설명해주세요.
[]
)를 사용하여 배열을 직접 선언하고, 원하는 요소를 대괄호 안에 콤마로 구분하여 넣습니다Array
객체의 생성자를 호출하여 배열을 생성할 수 있습니다. 이 방법은 새로운 빈 배열을 생성하거나, 특정 길이를 가진 배열을 생성할 때 유용합니다.Array.of
메서드를 사용하면 주어진 인자들로 배열을 생성할 수 있습니다. new Array()
와 달리, 단일 숫자 인자를 전달해도 그 숫자를 요소로 가지는 배열을 생성합니다.Array.from
메서드는 유사 배열 객체나 반복 가능한 객체(iterable)로부터 새로운 배열 인스턴스를 생성합니다. 이 방법은 유사 배열 객체나 다른 반복 가능한 객체를 배열로 변환할 때 매우 유용합니다.희소배열은 연속적인 값의 집합이라는 배열의 기본적인 개념과 맞지 않으며, 성능에도 좋지 않은 영향을 주므로 배열을 생성할 경우 희소 배열을 생성하지 않도록 주의
delete연산자
delete
연산자를 사용하면 객체의 프로퍼티 값을 직접 삭제한다., 배열의 길이는 변하지 않습니다. 즉 이 때 배열은 희소 배열이 되서 length 프로퍼티의 값은 변하지 않는다.
slice 메서드
인수로 전달된 범위(start,end)의 요소들을 복사하여 배열로 반환한다. 특정요소를 제외한 새로운 배열을 만듬. 원본 배열은 변경되지 않음.
인수를 생략하면 원본 배열을 얕은 복사해서 복사본 생성.
delete연산자는 희소배열을 생성하므로 배열 관점에서는 slice메서드가 적절하다.