본문 바로가기

Slack 채널 정리

js - 제목 붙이기 애매한

유사한 조건 체크 로직이 반복적으로 쓰이는데(그리드의 다수 컬럼값을 조합해서 조건 체크) 좀 깔끔하게할 방법 없을까 물어보셔서 리팩토링해보았다. 물론 리팩토링한 코드는 채택되지 않았다 ㅋ

//AsIs
var allData = widgetGrid100.getAllRow();
        
for(var i=0; i < allData.length; i++) {
    if ( allData[i].cmdtChk !== "Y") {
        if ( ( allData[i].arorGcChk    === "Y" && allData[i].arorChk    === "Y") ||
             ( allData[i].ardeGcChk    === "Y" && allData[i].ardeChk    === "Y") ||                         
             ( allData[i].grateGcChk   === "Y" && allData[i].grateChk   === "Y") ||                         
             ( allData[i].srateGcChk   === "Y" && allData[i].srateChk   === "Y") ){
            onsite.messageBox(...);
            return false;
        }                           
    } 
}
						
//리팩토링 후
var allData = widgetGrid100.getAllRow();
var cols = [["arorGlChk", "arorChk"], ["ardeGcChk", "ardeChk"], ["grateGcChk", "grateChk"], ["srateGcChk", "srateChk"]];

allData.forEach(function(valObj)) {
    if (valObj.cmdtChk !== "Y" && isPreCond(valObj, cols)) {
        onsite.messageBox(...);
        return false;
    }
}

function isPreCond(item, colPair) {
    return colPair.some(function(pairVal) {
        var conStr = "";
        pairVal.forEach(function(colName) {
            conStr += item[colName];
        });
        return "Y".repeat(pairVal.length) === conStr;
    });
}