복습 #3-1 배열 (Array)

rlcjf0014·2019년 11월 19일
0

프리코스_35

목록 보기
7/15

복습 파트 3로는 배열을 복습해보려한다. 근데 하도 method들도 많고 내용도 길어서 아마 긴 파트가 될 것이라고 예상된다. TMI로서는 오늘 프리코스 수료증을 받았다! 그래도 꾸준히 해서 성공적으로 수료했다니 감개무량하다. 계속 공부해서 이머시브도 잘 입성해야겠다!

배열의 길이 구하기 (array.length)

String과 마찬가지로 .length 메소드를 사용하면 아주 간편하게 배열의 길이를 구할 수 있다.


Example)

console.log( [1, 2, 3].length)

//Expected Outcome: 3

배열인지 아닌지 확인하기 ( Array.isArray(obj) )

이 method는 특이하게 배열이 argument로 들어간다. argument에 배열을 넣어주면 리턴값으로 배열이면 true, 아니면 false를 반환한다. 객체와 배열은 둘다 typeof를 돌리면 object라고 나오기때문에 이 method는 배열인지 아닌지 구분할 때 필수인 method이다.

Example)

let example = [1, 3, 5];

console.log ( Array.isArray(example) )

//Expected Outcome: true

배열의 각각 element에 변화를 줄 때

(array.forEach(callback) ) * immutable

이 method는 일단 immutable하기 때문에 원본 배열의 변경이 불가하다. 특이하게도 리턴하는 값이 없다. 항상 undefined를 리턴할 것이다. 인덱스 순서대로 파라미터가 가고 배열 요소의 길이만큼 실행된다. forEach는 아래 비슷한 method들이 더 나올것이다.


Example)

var array1 = ['a', 'b', 'c'];

array1.forEach(function(element) {

  console.log(element);

});

// expected output: "a"

// expected output: "b"

// expected output: "c"

배열의 각각 element에 변화를 줄 때 #2

( array.map(callback) ) *immutable

map은 forEach와 거의 유사한 기능을 하지만 callback함수 안에 반드시 return이 필요하다.
또 map은 메모리를 저장하고 반환값을 저장한다. 속도도 더 빠르고 함수형 프로그래밍을 선호한다면 map이 더 좋은 선택지이다. forEach는 기존의 배열에 영향을 주고 변경하는 반면 map은 새로운 배열을 리턴하기 때문이다.

Example)

var array1 = [1, 4, 9, 16];

const map1 = array1.map(x => x * 2);

console.log(map1);

// expected output: Array [2, 8, 18, 32]

배열에서 필요한 요소들만 골라내고 싶을 때

( array.filter(callback) ) * immutable

filter는 배열의 길이만큼 순서대로 진행되는 method인데 callback에 들어있는 함수에 따라서 callback에 부합한 요소만 있는 새로운 배열을 리턴해준다. callback안에 Boolean형태 return 이 필요하다. 특정 element를 걸러낼 때 유용하게 쓰이는 method이다.
forEach와 filter의 차이는 forEach는 loop를 돌며 callback을 실행하는데 그치지만 filter는 callback을 실행한 후 리턴값까지 체크한다.

Example)

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);

// expected output: Array ["exuberant", "destruction", "present"]

오늘은 여기까지~

profile
Grow Joshua, Grow!

0개의 댓글