JavaScript | Array Methods #1 (Array생성자 함수, fill, map, form, keys)

권기현·2021년 2월 1일
0

JavaScript

목록 보기
5/7

알고리즘 내용을 다룬 게시글에 정리는 되어있지만 그때 그때 정리해서 JS파트에 정리해두려고 한다.
다시 이 글을 보고 정리한 뒤 밑의 링크의 문제를 풀어봐도 도움이 될 것 같다.
▶︎ 관련 문제 링크( [ Algorithm ] x만큼 간격이 있는 n개의 숫자 문제 )

- Array( ) 생성자 함수

: 배열을 생성하는데는 예전 방식인 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]

- fill()

: 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다

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()

map() 메서드는 배열 내의 모든 요소 각각에 대하여 ✅ 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

arr.map( callback ( currentValue [, index [, array ]])[, thisArg])

  • 매개변수
    • callback
      : 새로운 열 요소를 생성하는 함수. 다음 세 가지 인수를 가집니다.
    • currentValue
      : 처리할 현재 요소.
    • index ( Optional )
      : 처리할 현재 요소의 인덱스.
    • array ( Optional )
      : map()을 호출한 배열.
    • thisArg ( Optional )
      : callback을 실행할 때 this로 사용되는 값.

- Array.from()

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 객체를 해체 할 수 있다.

- keys()

: 배열의 각 인덱스를 키 값으로 가지는 새로운 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 이 있다. 이 부분에 대해서는 아직 명확하게 이해를 하지 못하여서 따로 정리하여야겠다.

profile
함께 일하고 싶은 개발자를 목표로 매일을 노력하고, 옷을 좋아하는 권기현 입니다.

0개의 댓글