JavaScript에서 객체 배열을 다루다 보면, 특정 조건을 만족하는 요소의 값만 곱하거나 수정해야 하는 경우가 자주 발생합니다. 이번 글에서는 amount(금액) 값이 500보다 클 때만 2배로 곱하는 방법을 알아보겠습니다.
예시 데이터
먼저 다음과 같은 직원 객체 배열이 있다고 가정해 보겠습니다.
var employee = [
{ name: "John", amount: 800 },
{ name: "David", amount: 500 },
{ name: "Bob", amount: 450 }
]우리가 원하는 작업은 amount 값이 500보다 큰 경우에만 해당 값을 2배로 곱하는 것입니다. 즉, 기대되는 출력 결과는 다음과 같습니다.
[
{ name: 'John', amount: 1600 },
{ name: 'David', amount: 500 },
{ name: 'Bob', amount: 900 }
]for 반복문을 사용한 구현
가장 기본적인 방법은 for 반복문과 if 조건문을 함께 사용하는 것입니다. 각 객체를 순회하면서 조건에 맞는 값만 곱해 주면 됩니다.
var employee = [
{ name: "John", amount: 800 },
{ name: "David", amount: 500 },
{ name: "Bob", amount: 450 }
]
console.log("곱셈 전 결과=")
console.log(employee)
for (var index = 0; index < employee.length; index++) {
if (employee[index].amount > 500) {
employee[index].amount = employee[index].amount * 2;
}
}
console.log("곱셈 후 결과=")
console.log(employee)코드 설명
- for 반복문: 배열의 처음부터 끝까지 각 객체를 하나씩 순회합니다.
- if 조건문: 현재 객체의 amount 값이 500보다 큰지 확인합니다.
- 값 갱신: 조건을 만족하면 해당 객체의 amount 값을 2배로 변경합니다. John(800)은 1600으로, Bob(450)은 500보다 작으므로 그대로 유지됩니다.
프로그램 실행 방법
위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름을 demo257.js로 저장했다고 가정합니다.
실행 결과
코드를 실행하면 콘솔에 다음과 같은 출력이 표시됩니다.
PS C:\Users\Amit\javascript-code> node demo257.js
곱셈 전 결과=
[
{ name: 'John', amount: 800 },
{ name: 'David', amount: 500 },
{ name: 'Bob', amount: 450 }
]
곱셈 후 결과=
[
{ name: 'John', amount: 1600 },
{ name: 'David', amount: 500 },
{ name: 'Bob', amount: 900 }
]map()을 활용한 대안 방법
for 반복문은 원본 배열을 직접 수정합니다. 만약 원본 배열을 유지하면서 새로운 배열을 생성하고 싶다면 map() 메서드를 사용하는 것이 더 안전하고 깔끔한 방법입니다.
var result = employee.map(function (item) {
return item.amount > 500
? { ...item, amount: item.amount * 2 }
: { ...item };
});
console.log(result);map()은 각 요소를 변환한 새로운 배열을 반환하므로, 함수형 프로그래밍 스타일을 선호하거나 불변성(immutability)을 지켜야 하는 상황에서 특히 유용합니다.
정리
- 특정 조건에 맞는 객체의 값만 곱하려면 for 반복문 + if 조건문 조합을 사용합니다.
- 원본 배열을 변경하지 않으려면 map() 메서드와 전개 연산자(spread operator)를 활용하세요.
- 두 방법 모두 amount가 500 이하인 David의 값은 그대로 유지된다는 점을 기억하세요.