알고리즘 내용을 다룬 게시글에 정리는 되어있지만 그때 그때 정리해서 JS파트에 정리해두려고 한다.
다시 이 글을 보고 정리한 뒤 밑의 링크의 문제를 풀어봐도 도움이 될 것 같다.
▶︎ 관련 문제 링크( [ Algorithm ] x만큼 간격이 있는 n개의 숫자 문제 )
: 배열을 생성하는데는 예전 방식인 new 명령을 사용하는 방법과 리터럴 표기법(literal notation) 을 사용하여 생성하는 방식이 있습니다. (출처)
: 배열은 일반적으로 배열 리터럴 방식으로 생성하지만 배열 리터럴 방식도 결국 내장 함수 Array() 생성자 함수로 배열을 생성하는 것을 단순화시킨 것이다.
: Array() 생성자 함수는 매개변수의 갯수에 따라 다르게 동작한다.
매개변수가 1개이고 숫자인 경우 ✅매개변수로 전달된 숫자를 length 값으로 가지는 빈 배열을 생성한다.
// 매개변수로 하나의 숫자를 가지는 경우
const arr = new Array(2);
console.log(arr); // (2) [empty × 2]
// 매개변수로 전달된 값들을 요소로 가지는 배열을 생성하는 경우
const arr = new Array(1, 2, 3);
console.log(arr); // [1, 2, 3]
: 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다
arr.fill ( value [, start [, end]])
- 매개변수
- value
: 배열을 채울 값.- start( Optional )
: 시작 인덱스, 기본 값은 0.- end ( Optional )
: 끝 인덱스, 기본 값은 this.length.
const array1 = [1, 2, 3, 4];
// fill with 0 from position 2 until position 4
console.log(array1.fill(0, 2, 4));
// expected output: [1, 2, 0, 0]
// fill with 5 from position 1
console.log(array1.fill(5, 1));
// expected output: [1, 5, 5, 5]
console.log(array1.fill(6));
// expected output: [6, 6, 6, 6]
map() 메서드는 배열 내의 모든 요소 각각에 대하여 ✅ 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
arr.map( callback ( currentValue [, index [, array ]])[, thisArg])
- 매개변수
- callback
: 새로운 열 요소를 생성하는 함수. 다음 세 가지 인수를 가집니다.- currentValue
: 처리할 현재 요소.- index ( Optional )
: 처리할 현재 요소의 인덱스.- array ( Optional )
: map()을 호출한 배열.- thisArg ( Optional )
: callback을 실행할 때 this로 사용되는 값.
ES6에서 새롭게 도입된 Array.from() 메소드는 유사 배열 객체(array-like object) 또는 이터러블 객체(iterable object) 를 변환하여 새로운 배열을 생성한다.
// 문자열은 이터러블이다.
const arr1 = Array.from('Hello');
console.log(arr1); // [ 'H', 'e', 'l', 'l', 'o' ]
// 유사 배열 객체를 새로운 배열을 변환하여 반환한다.
const arr2 = Array.from({ length: 2, 0: 'a', 1: 'b' });
console.log(arr2); // [ 'a', 'b' ]
// Array.from의 두번째 매개변수에게 배열의 모든 요소에 대해 호출할 함수를 전달할 수 있다.
// 이 함수는 첫번째 매개변수에게 전달된 인수로 생성된 배열의 모든 요소를 인수로 전달받아 호출된다.
const arr3 = Array.from({ length: 5 }, function (v, i) { return i; });
console.log(arr3); // [ 0, 1, 2, 3, 4 ]
위의 코드를 보면 Spread문법을 사용한다. 그 이유는 Spread 문법을 이용하면 iterable 객체를 해체 할 수 있다.
: 배열의 각 인덱스를 키 값으로 가지는 새로운 Array Iterator 객체를 반환합니다.
Array Iterator 객체를 반환하는 함수는 다음의 함수들이 있다.
const array1 = ['a', 'b', 'c'];
const iterator = array1.keys();
for (const key of iterator) {
console.log(key);
}
// >0
// >1
// >2
----------------------------------
const arr = [...Array(5).keys()];
console.log(arr);
// >[ 0, 1, 2, 3, 4 ]
ES6에서 Iterable protocol 이 추가 되었고, Iterable protocol의 2가지 형태로는 iterable 과 iterator 이 있다. 이 부분에 대해서는 아직 명확하게 이해를 하지 못하여서 따로 정리하여야겠다.