Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 객체 배열에서 특정 값만 곱하는 방법

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의 값은 그대로 유지된다는 점을 기억하세요.