유사한 조건 체크 로직이 반복적으로 쓰이는데(그리드의 다수 컬럼값을 조합해서 조건 체크) 좀 깔끔하게할 방법 없을까 물어보셔서 리팩토링해보았다. 물론 리팩토링한 코드는 채택되지 않았다 ㅋ
//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;
});
}
'Slack 채널 정리' 카테고리의 다른 글
forEach 의 콜백함수에 param 넘기는 예 (0) | 2019.11.27 |
---|---|
groovy - db, http (0) | 2019.11.27 |
batch 스크립트에서 파일 탭으로 열기 (0) | 2019.11.27 |
js - 배열에 들어있는 Object Literal의 값으로 연산하는 함수 (0) | 2019.11.27 |
js - 배열에서 모든 중복된 값의 index 를 리턴해주는 함수 (0) | 2019.11.27 |