배열의 여러 속성을 사용한 효율적인 개체 그룹화
배열의 개체 그룹화 작업은 단일 속성 이상으로 확장될 수 있습니다. 어떤 경우에는 그룹화를 위해 여러 속성을 고려해야 합니다. 이 시나리오에서는 맞춤형 접근 방식이 필요합니다.
모양과 색상을 기준으로 개체를 그룹화하는 문제를 해결해 보겠습니다. 목표는 모양과 색상이 동일한 개체를 그룹화하면서 사용 및 인스턴스 값을 합산하는 것입니다.
예상 동작:
const arr = [ { shape: 'square', color: 'red', used: 1, instances: 1 }, { shape: 'square', color: 'red', used: 2, instances: 1 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 4 }, { shape: 'circle', color: 'red', used: 1, instances: 1 }, { shape: 'circle', color: 'red', used: 1, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 5 }, { shape: 'square', color: 'red', used: 2, instances: 1 } ]; const expectedResult = [ { shape: "square", color: "red", used: 5, instances: 3 }, { shape: "circle", color: "red", used: 2, instances: 1 }, { shape: "square", color: "blue", used: 11, instances: 9 }, { shape: "circle", color: "blue", used: 0, instances: 0 } ];
주요 고려 사항 :
해결책:
Array#reduce를 활용하여 다음을 수행할 수 있습니다. 모양 색상을 추적하기 위해 도우미 개체를 유지하면서 배열을 반복합니다. 조합.
각 개체에 대해:
키가 개체에서 발견되지 않은 경우 도우미 개체:
키가 이미 도우미 개체:
이 프로세스는 값을 누적하면서 모양과 색상이 동일한 개체를 효과적으로 그룹화합니다.
코드 조각:
const arr = [ { shape: 'square', color: 'red', used: 1, instances: 1 }, { shape: 'square', color: 'red', used: 2, instances: 1 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 4 }, { shape: 'circle', color: 'red', used: 1, instances: 1 }, { shape: 'circle', color: 'red', used: 1, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 5 }, { shape: 'square', color: 'red', used: 2, instances: 1 } ]; let helper = {}; const result = arr.reduce((r, o) => { const key = `${o.shape}-${o.color}`; if (!helper[key]) { helper[key] = Object.assign({}, o); r.push(helper[key]); } else { helper[key].used += o.used; helper[key].instances += o.instances; } return r; }, []); console.log(result);
출력이 일관되게 정확하여 예상과 일치합니다. 결과:
[ { shape: 'square', color: 'red', used: 5, instances: 3 }, { shape: 'circle', color: 'red', used: 2, instances: 1 }, { shape: 'square', color: 'blue', used: 11, instances: 9 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 } ]
이 기술을 활용하면 여러 속성을 기반으로 값을 효율적으로 그룹화하고 합산할 수 있으므로 복잡한 데이터 조작 작업을 배열로 처리할 수 있습니다.
위 내용은 여러 속성을 기준으로 배열의 개체를 효율적으로 그룹화하고 해당 값을 요약하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!