재귀함수? rescursive? 이진함수트리?

|
/**
 * 조직 내 하위 직원count를 하고자 한다.
 */
makeSubEmpCount: function (orgData) {
    var i, len;
    var data = incmm.util.copyObject(orgData);
    var map = {};
    var sumSubEmpCount = function (key, empCnt) {
    	// param으로 넘어온 pkey가 없으면 새로 totalEmpCount를 할당해주고,
        if (!map[key]) {
            map[key] = {
                totalEmpCount: empCnt
            };
        } else {
        	// param으로 넘어온 pkey가 있으면 기존 totalEmpCount에 값을 더한다.
            map[key].totalEmpCount += empCnt;
        }
        var rkey = map[key].rkey;
        // upOrgId가 있는경우에 다시 sumSubEmpCount를 실행한다.
        if (rkey) {
            sumSubEmpCount(rkey, empCnt);
        }
        return map;
    }
    
    // 개별 data를 돌면서
    for (i = 0, len = data.length; i < len; i++) {
        var row = data[i];
        var pkey = row.orgId; // pkey는 해당 orgId이고,
        var rkey = $.trim(row.upOrgId); // rkey는 해당 upOrgId이다.
        var empCnt = row.empCount - 0;
        // map에 rkey와 totalEmpCount를 할당한다.
        if (!map[pkey]) { 
            map[pkey] = {
                rkey: rkey,
                totalEmpCount: 0
            };
        }
        sumSubEmpCount(pkey, empCnt); // 하위 조직 count를 구하는 함수에 pkey와 empCnt를 param으로 넘겨준다.
    }
    
    return map;
},

'Algorithm Study' 카테고리의 다른 글

코딩도장 Lv.2  (0) 2020.01.10
코딩도장 Lv.1  (0) 2020.01.09
And