index로 접근만 가능하나 read only. 쓸 수는 없다.
string 타입과 다른 타입에 +연산자 사용하면, string형식으로 변환
모든 string method는 immutable하다(원본이 변하지 않는다).
배열은 mutable immutable을 잘 구분 해야한다.
forEach
전달인자는 반복 실행할 함수이고 배열의 길이만큼 반복 실행한다.
인자로 전달되며, 실행여부를 해당 함수(forEach)가 결정하는 형태의 함수를 callback이라고 부른다.
리턴 값이 없다.
callback함수의 파라미터 순서는 순서대로
-> 현재엘리먼트(value), 인덱스(index), 원본배열(array)
map
전달인자는 반복 실행할 함수
callback함수는 리턴값이 필요하며, 해당내용이 새로운 배열의 element가 된다.
리턴 값은 callback의 리턴값들이 담긴 배열이다.
callback함수의 파라미터 순서는 순서대로
-> 현재엘리먼트(value), 인덱스(index), 원본배열(array)
filter
전달인자는 해당 element가 필터 조건에 맞는지 검사할 함수
callback함수에는 리턴값이 필요하며, true일 경우 필터조건에 통과
리턴 값은 callback의 리턴 값들이 담긴 배열
callback함수의 파라미터 순서는 순서대로
-> 현재엘리먼트(value), 인덱스(index), 원본배열(array)
reduce
reduce 작동원리: 배열에서 문자로,배열에서 숫자로, 배열에서 객체로 -> 여러 개의 값이 담긴 배열이 줄여서(reduce) 최종적으로 하나의 값으로 만드는 과정
배열을 하나의 값으로 만드는 함수: 리듀서
전달인자는 리듀서함수, 초기값이다. 리듀서는 리턴값이 필요하며, 다음번 리듀서 호출 시, 첫번째 파라미터로 전달됨
리턴 값은 리듀서가 마지막으로 리턴하는 값
callback함수의 파라미터 순서는 순서대로
-> 누적값(accumulator), 현재 엘리먼트(value), 인덱스(index), 원본배열(array)
let users = [{name: 'T', city: 'Seoul'},{name: 'N', city: 'Seoul'},{name: 'U', city: 'LA'}];
function reducer((acc,val) => {
acc[val.city]++;
return acc;
})
let population = {
'Seoul': 0,
'LA': 0
};
users.reduce(reducer,population);