{"id":25781897,"url":"https://github.com/messsimo/lab2_js","last_synced_at":"2026-05-09T23:49:30.554Z","repository":{"id":279106684,"uuid":"937736809","full_name":"messsimo/lab2_js","owner":"messsimo","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-23T19:26:11.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T20:28:07.207Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/messsimo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-23T19:21:49.000Z","updated_at":"2025-02-23T19:26:14.000Z","dependencies_parsed_at":"2025-02-23T20:28:36.125Z","dependency_job_id":null,"html_url":"https://github.com/messsimo/lab2_js","commit_stats":null,"previous_names":["messsimo/lab2_js"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messsimo%2Flab2_js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messsimo%2Flab2_js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messsimo%2Flab2_js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messsimo%2Flab2_js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/messsimo","download_url":"https://codeload.github.com/messsimo/lab2_js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240993866,"owners_count":19890420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-27T07:32:49.752Z","updated_at":"2026-05-09T23:49:30.423Z","avatar_url":"https://github.com/messsimo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Лабораторная работа №2. Анализ транзакций с использованием JavaScript\n\n## Цель работы\nПознакомиться с методами обработки данных в JavaScript, реализовать функции для анализа транзакций, таких как вычисление общей суммы, фильтрация по типам и диапазонам дат, и другие.\n\n## Условие\n\n### Задание 1. Создание массива транзакций\n\n1. **Создание массива объектов:**\n    - Создал массив `transactions`, состоящий из объектов транзакций. Каждый объект включает в себя следующие поля:\n        - `transaction_id`: уникальный идентификатор транзакции.\n        - `transaction_date`: дата транзакции.\n        - `transaction_amount`: сумма транзакции.\n        - `transaction_type`: тип транзакции (приход или расход).\n        - `transaction_description`: описание транзакции.\n        - `merchant_name`: название магазина или сервиса.\n        - `card_type`: тип карты (кредитная или дебетовая).\n    - Для тестирования использовал примеры транзакций, например: покупка в магазине, возврат товара, ужин с друзьями.\n\n2. **Подготовка среды:**\n    - Установил редактор кода VS Code.\n    - Создал файл `main.js` для размещения кода JavaScript.\n    - Ввел массив транзакций, готовый к дальнейшему анализу.\n\n### Задание 2. Реализация функций для анализа транзакций\n\n1. **Получение уникальных типов транзакций:**\n    - Реализовал функцию `getUniqueTransactionTypes`, которая использует `Set` для возвращения массива уникальных типов транзакций.\n\n2. **Вычисление общей суммы всех транзакций:**\n    - Реализовал функцию `calculateTotalAmount`, которая суммирует все значения транзакций с использованием метода `reduce`.\n\n3. **Вычисление общей суммы транзакций за определенный день, месяц и год:**\n    - Реализована функция `calculateTotalAmountByDate`, которая позволяет подсчитать сумму транзакций по указанной дате.\n\n4. **Фильтрация транзакций по типу (debit или credit):**\n    - Написал функцию `getTransactionByType`, которая фильтрует транзакции по заданному типу.\n\n5. **Фильтрация транзакций по диапазону дат:**\n    - Создал функцию `getTransactionsInDateRange`, которая возвращает транзакции, проведенные в указанном диапазоне дат.\n\n6. **Получение транзакций по merchant_name:**\n    - Реализована функция `getTransactionsByMerchant`, которая возвращает транзакции для указанного продавца или сервиса.\n\n7. **Вычисление среднего значения транзакций:**\n    - Написал функцию `calculateAverageTransactionAmount`, которая вычисляет среднее значение всех транзакций.\n\n8. **Получение транзакций по диапазону суммы:**\n    - Реализована функция `getTransactionsByAmountRange`, которая фильтрует транзакции по заданному диапазону сумм.\n\n9. **Вычисление общей суммы дебетовых транзакций:**\n    - Создана функция `calculateTotalDebitAmount`, которая подсчитывает общую сумму только дебетовых транзакций.\n\n10. **Определение месяца с наибольшим количеством транзакций:**\n    - Написана функция `findMostTransactionsMonth`, которая находит месяц с наибольшим количеством транзакций.\n\n11. **Определение месяца с наибольшим количеством дебетовых транзакций:**\n    - Реализована функция `findMostDebitTransactionMonth`, которая находит месяц с наибольшим количеством дебетовых транзакций.\n\n12. **Определение наиболее частого типа транзакций:**\n    - Функция `mostTransactionTypes` возвращает наиболее частый тип транзакций (debit или credit).\n\n13. **Получение транзакций до указанной даты:**\n    - Написана функция `getTransactionsBeforeDate`, которая фильтрует транзакции до определенной даты.\n\n14. **Поиск транзакции по уникальному идентификатору:**\n    - Создана функция `findTransactionById`, которая позволяет найти транзакцию по её уникальному идентификатору.\n\n15. **Возвращение только описаний транзакций:**\n    - Реализована функция `mapTransactionDescriptions`, которая возвращает массив с описаниями транзакций.\n\n### Задание 3. Тестирование функций\n\n1. Для тестирования каждой из функций я использовал массив с несколькими транзакциями. Примерный вывод в консоль для проверки:\n    - Уникальные типы транзакций.\n    - Общая сумма всех транзакций.\n    - Сумма транзакций по дате.\n    - Транзакции определенного типа и по диапазону дат.\n    - Среднее значение транзакций и фильтрация по сумме.\n2. Все функции проверены на разных наборах данных:\n    - Пустой массив транзакций.\n    - Массив с одной транзакцией.\n\n## Выводы\nВ ходе работы я научился:\n- Создавать и обрабатывать массивы объектов в JavaScript.\n- Реализовывать различные методы для анализа и фильтрации данных.\n- Практиковаться в работе с функциями и операциями над массивами.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmesssimo%2Flab2_js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmesssimo%2Flab2_js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmesssimo%2Flab2_js/lists"}