반응형
javascript에서 "0>1"등의 형식과 같은 문자열로 된 부등식의 결과가 올바른지, 아닌지 판별하기 위해 eval()함수를 사용할 수 있다. 하지만 어딜 찾아봐도 해당 함수는 보안상의 위험이 있으니 사용을 지양하라고 한다.
해당 함수를 대체하기 위해 동일한 결과를 제공하는 함수를 하단에 공유한다.
function evaluateInequality(inequalityString) {
// 정규 표현식을 사용하여 부등식 패턴을 추출
const regex = /^([-+]?\d+(\.\d*)?)\s*([<>]=?)\s*([-+]?\d+(\.\d*)?)$/;
const match = inequalityString.match(regex);
if (!match) {
throw new Error('Invalid inequality format');
}
const leftOperand = parseFloat(match[1]);
const operator = match[3];
const rightOperand = parseFloat(match[4]);
// 부등식을 평가하여 결과를 반환
switch (operator) {
case '>':
return leftOperand > rightOperand;
case '>=':
return leftOperand >= rightOperand;
case '<':
return leftOperand < rightOperand;
case '<=':
return leftOperand <= rightOperand;
case '=':
return leftOperand === rightOperand;
default:
throw new Error('Unsupported operator');
}
}
// 사용 예시
try {
const result1 = evaluateInequality("0 >= 0");
console.log(result1); // true
const result2 = evaluateInequality("-1 >= 0");
console.log(result2); // false
const result3 = evaluateInequality("abc >= 0"); // 예외 발생: Invalid inequality format
} catch (error) {
console.error(error.message);
}
반응형
'JavaScript' 카테고리의 다른 글
[JS] 타임 슬라이더 구현(자동 스크롤) (0) | 2024.11.25 |
---|---|
[지도 API] leaflet (0) | 2024.11.22 |
Object의 value로 index접근하는 방법 (0) | 2022.11.24 |
[openLayers_proj] 좌표계 변환 (0) | 2022.11.21 |
[지도API] Open Layers_2 (0) | 2022.11.21 |