다음과 같은 개체 목록이 있습니다.
const UsageCosts = { 224910186407: { 장치 ID: "224910186407", 통화: "GBP", 연간 사용량: 1480.81 }, 224910464538: { 장치 ID: "224910464538", 통화: "GBP", 연간 사용량: 617.36 }, 224910464577: { 장치 ID: "224910464577", 통화: "EUR", 연간 사용량: 522.3 } }
다음과 같이 통화별로 합계를 계산합니다.
const totalYearlyCost = Object.values(usageCosts).reduce( (acc: { [키: 문자열]: 임의 }, 통계: 임의) => if (stat.currency && !acc[stat.currency]) { acc[stat.currency] = 0 } 반품 { ...acc, [stat.currency!]: acc[stat.currency!] + stat.yearlyUsage, } }, {}, )
다음과 같이 개체를 반환합니다.
{ 유로: 522.3 GBP: 2,098.17 }
또한 다음과 같이 통화당 총 기기 수를 반환하고 싶습니다.
{ EUR: 522.3(1개 장치) GBP: 2,098.17(2개 장치) }
다른 루프를 추가해 보았으나 결과가 예상과 달랐습니다.
이 작업을 두 부분으로 나누면 더 쉬울 것입니다.
먼저
reduce
그룹화된 값을 포함하는 배열로 변환합니다.그런 다음 객체를 반복하고(reduce를 사용할 수도 있음)배열의 합계를 구하고 문자열에
${array.length} devices
를 추가합니다.