const 대충만들어보는forEach = (predicate, thisArg) => {
//하나하나 탐색하면서 콜백함수를 반복호출
//JS는 함수형프로그래밍 이므로, 이렇게 parameter로 함수가 오는 것이 가능함.
for(let i = 0; i<배열.length; i++){
predicate(a[i],i);
}
}
a=[0,1,2,3,4,5]
//배열의 요소의 멋진 표현= a[i] , 배열의 인덱스 = i = idx = index
//forEach의 2번째 parameter인 thisArg (=[1,2])는 콜백함수 안으로 바인딩이 된다.
//옵셔널(선택사항)이기 떄문에 필요한 상황일 때 쓰면 된다.
a.forEach(function(배열의요소,배열의인덱스){
console.log(배열의요소,배열의인덱스,this);
},[1,2])
햇갈리지말자구요!
forEach의 안에있는
(function(어쩌고){저쩌고})
는 CallBack Function(콜백함수)이다.
const arr=['정현', '나희', '진상', '연주', '종엽']
arr.forEach((name, idx) =>
console.log("index: " + idx + ", name: " + name),
)
const 대충만들어보는map = (predicate, thisArg) => {
//빈배열을 선언해주고,
let list = []
//뺑뻉이 돌면서 빈배열에 하나하나 차곡차곡 넣어줌.
//아하, 이래서 배열을 리턴하는거구나
for (let i = 0; i < 배열.length; i++) {
list.push(predicate(a[i], i))
}
return list
}
요론식으루 제곱된 값들이 들은 새 배열이 출력 됨
const arr = [0, 1, 2, 3, 4, 5]
const square = arr.map((value, idx) => {
return v * v
})
console.log(square)
const 대충만들어보는filter = (predicate, thisArg) => {
let list = []
for (let i = 0; i < 배열.length; i++) {
//조건이 참인 경우만, 새 배열에 넣어줌
if(predicate(a[i], i)) list.push(a[i]);
}
return list
}
요론식으루 조건들을 만족한 새 배열(짝수)이 출력 됨
const arr = [0, 1, 2, 3, 4, 5]
const evenNumber = arr.filter((value, idx) => {
return value % 2 === 0
})
console.log(evenNumber)
const 대충만들어보는reduce = (predicate, value) => {
let result = value;
for (let i = 0; i < 배열.length; i++) {
result = predicate(result, a[i]);
}
return result
}
요론식으루 모든 배열을 더한 값이 출력 됨
const arr = [0, 1, 2, 3, 4, 5]
const arrSum = arr.reduce((acc, cur) => {
return acc + cur
})
console.log(arrSum)