반응형
// 4. **각 도시별로 발생한 총 거래액을 객체 형태로 매핑해주세요.
// 예를 들어, `{서울: 총거래액, 부산: 총거래액}`과 같은 형태입니다.**
console.log('=============================');
const totalByCity = traders.reduce((totalByCity, trs) => {
const city = trs.trader.city;
totalByCity[city] = (totalByCity[city] || 0) + trs.value;
return totalByCity;
}, {});
console.log(totalByCity);
traders에서 reduce를 이용해 돌려준다 돌리는과정에 trs.trader.city를 다쓰기 귀찮으니 city값을 만들어줌
city 이름을 출력하고 반복을 돌려준다 모든 도시가 저장되기 위해 undefined가 뜨면 돌던값이 초기되니 0을 대신저장해주도록 만들고
돌면서 나온 값들을 옆에 출력해주기 위해 value를 저장해준다.
// 5. **거래액이 700000원 이상인 거래를 모두 찾아,
// 해당 거래의 연도별로 분류해주세요. 결과는
// `{2022: [...거래정보], 2023: [...거래정보]}`와 같은 형태가 되어야 합니다.**
const trsOver700kByYear = traders
.filter((trs) => trs.value >= 700000)
.reduce((transactions, trs) => {
const yearString = trs.year.toString();
if (!transactions[yearString]) {
transactions[yearString] = [trs];
} else {
transactions[yearString].push(trs);
}
return transactions;
}, {});
console.log(JSON.stringify(trsOver700kByYear, null, 2));
우선 70만원 이상인 거래만 filter 해준다
reduce로 돌린다 yearString은 귀찮은 값을 쓰기좋게 만들기위해 한다.
trs를 찾아다니는데 trs는 value니까 value가 없는 값은 없으니 일단 If안은 기본적으로 false로 간다
trs.year.toString();은 문자열로 변환해주는거라고 한다. 맨마지막에 써있느 빈객체에 문자로서 =보내야되서 그런것 같다
value는 다 else로 push되고 year들은 true쪽에 모이게 된다.
// 6. **각 거래자별로 그들이 진행한 거래의
// 평균 거래액을 계산해주세요.
// 결과는 `{거래자이름: 평균거래액}` 형태의 객체가 되어야 합니다.**
console.log('==============================');
const trsDataByName = traders.reduce((averageList, trs) => {
const name = trs.trader.name;
if (!averageList[name]) {
// 이 사람이름이 처음 등장했으면
averageList[name] = { total: trs.value, count: 1 };
} else {
averageList[name].total += trs.value;
averageList[name].count++;
}
return averageList;
}, {});
// console.log(trsDataByName);
// 평균 구하기
for (const key in trsDataByName) {
trsDataByName[key].average =
trsDataByName[key].total / trsDataByName[key].count;
}
console.log(trsDataByName);
일단 초기값부터 쭉 else로 갈테고 토탈에 value 저장 꼬박꼬박해주고
count에 숫자 쭉쭉 올려준다 . 마지막에 암것도 없을 때 객체로서 저장된다 카운트는 나중에쓸거만 있으면 되니 1로 걍 둬도됨
일단 총합은 정해졌고 저장된 카운트만큼 나눠주면된다.
ㅎㅎ
반응형
'JavaScript' 카테고리의 다른 글
DOM* 1 (1) | 2024.04.03 |
---|---|
JavaScript* sort 함수 (1) | 2024.04.01 |
JavaScript* Reduce 함수 (1) | 2024.03.29 |
JavaScript* 배열고차함수 (1) | 2024.03.29 |
JavaScript* 콜백 (Callback) (1) | 2024.03.29 |