변수의 범위를 1~5정도로 놓은다음,
1->5 로 높아질때,
5->1로 낮아질때와 같을때 대상잡는법이 궁금합니다.
직접 알려주시거나
혹시 배울수있는 예제같은것이라도 있으면 링크주시면 감사하겠습니다.
변수의 범위를 1~5정도로 놓은다음,
1->5 로 높아질때,
5->1로 낮아질때와 같을때 대상잡는법이 궁금합니다.
직접 알려주시거나
혹시 배울수있는 예제같은것이라도 있으면 링크주시면 감사하겠습니다.
간단한 방법: 단순 변수 대신 객체(JSON 스타일) 사용
이전값과 최신값을 각각 저장한 뒤, 비교 시 높낮이 비교까지
예:
function setRange(ref, val) {
ref.before = ref.value;
ref.value = val;
}
function compareRange(ref) {
if (ref.value > ref.before) {
console.log('값이 늘었음');
} else if (ref.value < ref.before) {
console.log('값이 줄었음');
} else {
console.log('값이 동일한 듯.');
}
}
var range = { value: 1 };
setRange(range, 3);
compareRange(range);
setRange(range, 2);
compareRange(range);
가능한 경우, Proxy
메소드를 사용하여 초기화를 하면 setRange 의 귀찮음 없이 평소대로 할당만 해도 가능. 예시 코드:
const setAndCompare = { set(o, key, value) {
if (key !== 'value') return true; // 다른 속성 변경 허용
// 유효성 검사 코드를 여기에 (1~5 범위 체크 등)
const oldVal = o[key];
if (value > oldVal) {
console.log('값이 늘었음');
} else if (value < oldVal) {
console.log('값이 줄어듬');
} else {
console.log('값이 그대로인 듯');
}
o[key] = value;
}
}
const range = new Proxy({ value: 1 }, setAndCompare);
range.value = 3; // 늘어남
range.value = 2; // 줄어듬