codestates pre course 과제 중, lodash method를 하나씩 구현하는 과제가 있었다.
그 중에 IAT 문제로 나왔던 _.reduce 구현이 까다로웠던 것으로 기억해 정리해보았다.
each
each는 object 또는 array 전체를 순회하는 method이다. return 값은 따로 없다.
//Call iterator(value, key, collection) for each element of collection. //collection은 주어진 object, iterator는 collection 길이만큼 순회하는 함수. _.each = function(collection, iterator) { if(Array.isArray(collection) { for(var i = 0; i < collection.length; i++) { iterator(collection[i], i, collection); } } else { for(var key in collection) { iterator(collection[key], key, collection); } }
reduce
_.reduce = function(collection, iterator, accumulator) { let result; let toArray = []; if(!Array.isArray(collection)){ _.each(collection, function(element){ toArray.push(element); }); collection = toArray; } if(accumulator === undefined){ result = collection[0] for(let i = 1; i < collection.length; i++){ result = iterator(result, collection[i]) } }else { result = accumulator for(let i = 0; i < collection.length; i++){ result = iterator(result, collection[i]) }; }; return result; };
rest parameter - Javascript ES6 (0) | 2019.04.23 |
---|---|
function default parameters - Javascript ES6 (0) | 2019.04.23 |
express로 구현하는 실습 문제 - Javascript, NodeJS (0) | 2019.04.21 |
Arrow funciton의 this context - Javascript ES6 (0) | 2019.04.19 |
Tagged Template literals - HTML, Javascript ES6 (0) | 2019.04.19 |
댓글 영역