소개

이 랩에서는 "FinTech Valley"의 활기찬 스타트업 현장을 배경으로, 급성장하는 기술 회사의 재무 추적 시스템을 개선하는 임무를 맡은 신진 소프트웨어 엔지니어 Alex 의 입장이 되어보겠습니다. 회사의 재무팀은 조직의 전반적인 재정 상태를 동적으로 볼 수 있는 방법이 필요합니다. 여러분의 목표는 기존 웹 기반 회계 애플리케이션에 총 수입, 총 지출 및 순 잔액을 계산하고 표시하여 실시간 재무 통찰력을 제공하는 기능을 구현하는 것입니다.

지식 포인트:

  • Array.prototype.filter()
  • Array.prototype.reduce()
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 95%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

필터링 및 축약

JavaScript 의 Array.prototype.filter()Array.prototype.reduce() 메서드는 배열 조작을 위한 강력한 도구로, 데이터 처리를 보다 효율적이고 간결하게 만들어줍니다. 이 메서드는 배열의 요소를 필터링하고 배열 요소의 값을 누적하는 데 사용됩니다.

Filter

filter() 메서드는 제공된 함수에 의해 구현된 테스트를 통과하는 모든 요소를 포함하는 새로운 배열을 생성합니다. 원본 배열을 변경하지 않고 새로운 배열을 반환합니다.

구문:

let result = array.filter(function (element, index, array) {
  // Test condition
  return true; // or false
});
  • element: 배열에서 처리 중인 현재 요소입니다.
  • index (선택 사항): 현재 요소의 인덱스입니다.
  • array (선택 사항): filter가 호출된 배열입니다.

예를 들어, 10 보다 큰 숫자를 필터링합니다.

let numbers = [5, 12, 8, 130, 44];
let filtered = numbers.filter(function (number) {
  return number > 10;
});
console.log(filtered); // Output: [12, 130, 44]
Filter method example output

Reduce

reduce() 메서드는 배열의 각 요소에 대해 리듀서 함수 (사용자가 제공) 를 실행하여 단일 출력 값을 생성합니다.

구문:

let result = array.reduce(function (
  accumulator,
  currentValue,
  currentIndex,
  array
) {
  // Return the accumulated result
  return accumulator + currentValue;
}, initialValue);
  • accumulator: 콜백의 반환 값을 누적합니다. 마지막 콜백 호출에서 이전에 반환된 누적 값 또는 initialValue (제공된 경우) 입니다.
  • currentValue: 배열에서 처리 중인 현재 요소입니다.
  • currentIndex (선택 사항): 처리 중인 현재 요소의 인덱스입니다.
  • array (선택 사항): reduce가 호출된 배열입니다.

예를 들어, 배열의 모든 숫자의 합을 계산합니다.

let numbers = [5, 12, 8, 130, 44];
let total = numbers.reduce(function (accumulator, number) {
  return accumulator + number;
}, 0);
console.log(total); // Output: 199
Reduce method example output

이 두 가지 메서드를 염두에 두고, 다음 단계는 수입과 지출의 총액을 계산하는 것입니다.

✨ 솔루션 확인 및 연습

요약 계산 로직 구현

이 단계에서는 총 수입, 총 지출 및 잔액을 계산하는 로직을 구현합니다. 여기에는 거래 기록을 반복하고, 수입과 지출을 합산하며, 순 잔액을 계산하는 JavaScript 함수를 추가하는 작업이 포함됩니다.

script.js에 다음을 작성하십시오.

document.addEventListener("DOMContentLoaded", function () {
  const updateSummary = () => {
    const totalIncome = records
      .filter((record) => record.type === "income")
      .reduce((acc, record) => acc + parseFloat(record.amount), 0);
    const totalExpense = records
      .filter((record) => record.type === "expense")
      .reduce((acc, record) => acc + parseFloat(record.amount), 0);
    const balance = totalIncome - totalExpense;

    totalIncomeEl.textContent = `Total Income: ${totalIncome}`;
    totalExpenseEl.textContent = `Total Expense: ${totalExpense}`;
    balanceEl.textContent = `Balance: ${balance}`;
  };

  // Function to save records to localStorage and update the UI
  const saveRecords = () => {
    localStorage.setItem("records", JSON.stringify(records));
    renderRecords();
    updateSummary();
  };
  renderRecords();
  updateSummary();
});

이 JavaScript 함수인 updateSummaryrecords 배열에서 총 수입과 지출을 계산하고 잔액을 업데이트합니다. 그런 다음 요약 섹션의 해당 HTML 요소의 텍스트 내용을 업데이트합니다.

✨ 솔루션 확인 및 연습

요약

이 랩에서는 "FinTech Valley"의 스타트업 회사의 재무 환경을 탐험하는 여정을 시작했습니다. Alex 의 역할을 수행하여 웹 기반 회계 도구를 개선하여 실시간 재무 요약을 제공했습니다. 동적 요약 기능을 통합함으로써 재무 팀이 회사의 재무 상태에 대한 즉각적인 통찰력을 얻을 수 있도록 하여 HTML, CSS 및 JavaScript 를 결합하여 대화형 및 유익한 웹 애플리케이션을 만드는 능력을 보여주었습니다. 이 경험을 통해 JavaScript 를 사용하여 DOM 을 조작하는 방법을 배우고 실제 애플리케이션 개발에 대한 이해도를 높였습니다.