From a7090e49072b81665d10ff5dde9e1bf5ecf725fb Mon Sep 17 00:00:00 2001 From: masteryada378 Date: Thu, 7 May 2026 12:04:54 +0300 Subject: [PATCH] sort the list of employees --- README.md | 6 +++--- src/scripts/main.js | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 294f077fb..af775c758 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 1. Replace `` with your Github username in the link - - [DEMO LINK](https://.github.io/js_task_parse_list_DOM/) + - [DEMO LINK](https://masteryada378.github.io/js_task_parse_list_DOM/) 2. Follow [this instructions](https://mate-academy.github.io/layout_task-guideline/) - Run `npm run test` command to test your code; - Run `npm run test:only -- -n` to run fast test ignoring linter; @@ -10,14 +10,14 @@ Hey there! Can you parse data from the list and sort it based on data attributes? Your task: Sort list by salary in descending order. -Get an array of employees. Write two functions: +Get an array of employees. Write two functions: - first, which sorts the list by salary from data attributes - second, which returns an array of objects, where objects are employees. The schema for the employee: ``` { - name, + name, position, salary, age diff --git a/src/scripts/main.js b/src/scripts/main.js index a765fdb1d..545deef62 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,35 @@ 'use strict'; -// write code here +const list = document.querySelector('ul'); + +const parseSalary = (salaryStr) => { + return Number(salaryStr.replace(/[^0-9.-]+/g, '')); +}; + +function sortList(listElement) { + const items = Array.from(listElement.children); + + items.sort((a, b) => { + const salaryA = parseSalary(a.dataset.salary); + const salaryB = parseSalary(b.dataset.salary); + + return salaryB - salaryA; + }); + + items.forEach((li) => listElement.append(li)); +} + +function getEmployees(listElement) { + const items = Array.from(listElement.children); + + return items.map((li) => ({ + name: li.textContent.trim(), + position: li.dataset.position, + salary: parseSalary(li.dataset.salary), + age: Number(li.dataset.age), + })); +} + +sortList(list); + +getEmployees(list);