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

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

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

Example)

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

//Expected Outcome: 3

  1. 배열인지 아닌지 확인하기 ( 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

  1. 배열의 각각 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"

  1. 배열의 각각 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]

  1. 배열에서 필요한 요소들만 골라내고 싶을 때 ( 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"]

오늘은 여기까지~