>웹 프론트엔드 >JS 튜토리얼 >JavaScript 개체 배열에서 중복 키를 병합하고 해당 값을 합산하는 방법은 무엇입니까?

JavaScript 개체 배열에서 중복 키를 병합하고 해당 값을 합산하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-28 03:47:10845검색

How to Merge Duplicate Keys and Sum Their Values in a JavaScript Object Array?

객체 배열에서 중복 키 병합 및 값 합산

JavaScript에서는 객체 배열로 작업하는 것이 일반적일 수 있습니다. 때로는 특정 속성을 유지하면서 배열 내에서 개체를 그룹화하고 수정해야 하는 경우가 있습니다. 그러한 시나리오 중 하나는 유사한 키와 연관된 값을 합산하는 것입니다.

객체 배열의 예를 사용하여 이 작업을 살펴보겠습니다.

const objects = [
  { name: 'P1', value: 150 },
  { name: 'P1', value: 150 },
  { name: 'P2', value: 200 },
  { name: 'P3', value: 450 },
];

우리의 목표는 '이름' 속성을 기준으로 객체를 그룹화하는 것입니다. 각각의 고유한 '이름'에 대한 '값' 속성을 합산합니다. 원하는 출력은 다음과 같아야 합니다.

[
  { name: 'P1', value: 300 },
  { name: 'P2', value: 200 },
  { name: 'P3', value: 450 },
];

이를 달성하기 위해 JavaScript의 객체 및 배열 조작 기능을 활용할 수 있습니다. 단계별 해결 방법은 다음과 같습니다.

1. 합산된 값을 저장할 객체 생성

각 '이름'에 대한 합산된 값을 저장하기 위한 컨테이너 역할을 할 'holder'라는 빈 JavaScript 객체를 생성하는 것부터 시작하세요.

2. 입력 배열 반복

'forEach' 루프를 사용하여 입력 배열의 각 객체('객체')를 반복합니다.

3. 'holder'에 기존 이름이 있는지 확인

루프 내부에서 'hasOwnProperty(d.name)'을 사용하여 현재 객체의 'name' 속성이 이미 'holder' 객체에 속성으로 존재하는지 확인합니다.

4. 값 합산 또는 초기화

'name' 속성이 존재하는 경우 현재 객체의 'value' 속성을 'holder'의 해당 속성에 추가합니다(예: 'holder[d.name] = d.value '). 'name' 속성이 발견되지 않으면 현재 객체의 'value' 속성으로 초기화합니다('holder[d.name] = d.value').

5. 병합된 개체로 새 배열 생성

모든 값이 합산되면 'obj2'라는 새 빈 배열을 만들어 병합된 개체를 저장합니다.

6. 'holder'를 반복하고 병합된 개체 푸시

다른 루프를 사용하여 'holder' 개체의 속성('for (var prop inholder)')을 반복합니다. 각 속성에 대해 '이름' 및 '값' 속성을 사용하여 새 객체를 생성하고 'obj2'에 푸시합니다.

7. 출력 기록

마지막으로 'obj2' 배열을 콘솔에 기록하여 합산된 '값' 속성과 함께 병합된 객체를 확인합니다.

예제 코드

다음은 코드 조각입니다. 이는 솔루션을 보여줍니다.

const objects = [
  { name: 'P1', value: 150 },
  { name: 'P1', value: 150 },
  { name: 'P2', value: 200 },
  { name: 'P3', value: 450 },
];

const holder = {};

objects.forEach(d => {
  if (holder.hasOwnProperty(d.name)) {
    holder[d.name] += d.value;
  } else {
    holder[d.name] = d.value;
  }
});

const obj2 = [];

for (var prop in holder) {
  obj2.push({ name: prop, value: holder[prop] });
}

console.log(obj2);

다음 단계를 따르면 효과적으로 그룹화하고 객체 배열의 유사한 키와 연관된 값을 합산하여 원하는 출력에 따라 수정된 객체로 새 배열을 만듭니다.

위 내용은 JavaScript 개체 배열에서 중복 키를 병합하고 해당 값을 합산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.