_.each function (collection, iteratee) { // 반복문
//intervieww(인터뷰당하는사람)->iterator(반복을하는것), iteratee(반복을당하는것)
// TODO: 여기에 코드를 작성합니다.
// collection: 배열, 객체
if(Array.isArray(collection){
for(let i = 0; i < collection.length; i++){
iteratee(collection[i], i, collection);
}
}else{
for (let key in collection){
iteratee(collection[key], key, collection);
}
}
};
let result = -1;
_.each(arr, fuction(items, index) {
if(item === target && result === -1)
result = index
}
});
return result;
});
_.filter = function (arr, test) {
const result = []; //세로운 배열 리턴
_.each(arr,(ele, idx, arr) => {
if(test(ele, idx, arr)){
result.push(ele);
}
})
return result;
};
element, index, array : 이 세개를 만들어주고 반복문을 돌려서 테스트 트부면 푸시해준다.
_.uniq = function (arr) {
// [1,1,2,2,3,3,4,4,5,5,] -> [1,2,3,4,5]
// todo
const result = [];
_.each(arr, ele => {if(_.indexOf(result, ele) === -1) result.push(ele)
})
return result;
}
};
_.map = function (arr, iteratee) {
const result = [];
_.each(arr, (ele, idx, arr) => {
result.push(iteratee(ele, idx, arr));
})
return result;
};
_.pluck = function (arr, keyOfIdx) {
return _.map(arr, arr => arr[keyOrIdx]);
_.reduce = function (arr, iteratee, initVal) { //undefined
// 초기값이 있으면 -> acc -> 초기값
// 초기값이 없으면 -> acc -> 0번째 인덱스
let acc = initVal; // 없으면 undefined. 있을땐
_.each(arr, (ele, idx, arr) => {
if(acc === undefined) {
acc = arr[0]; // acc 초기값 없을때
}else{
acc = iteratee(acc, ele, idx, arr) // 누적값이 계속 쌓이게 된다. -> acc
}
})
return acc;
};