From 9c97b021c9f70c15d5523af42a25ab75c6819557 Mon Sep 17 00:00:00 2001 From: Mykhailo Oliinyk Date: Mon, 1 Jun 2026 14:36:36 +0300 Subject: [PATCH 1/3] Solution --- README.md | 6 +++--- src/scripts/main.js | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 294f077fb..be60c4c74 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://azesmmisha.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..d38fb4152 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,36 @@ 'use strict'; // write code here +const listNode = document.querySelector('ul'); + +function sortList(list) { + const items = [...list.querySelectorAll('li')]; + + items.sort((a, b) => { + const aSalary = a.dataset.salary.replace(/[$,]/g, ''); + const bSalary = b.dataset.salary.replace(/[$,]/g, ''); + + return bSalary - aSalary; + }); + + list.append(...items); +} + +function getEmployees(list) { + const items = [...list.querySelectorAll('li')]; + + const persons = items.map((item) => { + const person = { name: item.textContent.trim() }; + + for (const key of Object.keys(item.dataset)) { + person[key] = item.dataset[key]; + } + + return person; + }); + + return persons; +} + +sortList(listNode); +getEmployees(listNode); From 4cd3468a1a7cdb3011d5c5bb4641a18b78524414 Mon Sep 17 00:00:00 2001 From: Mykhailo Oliinyk Date: Mon, 1 Jun 2026 14:48:08 +0300 Subject: [PATCH 2/3] added parseSalary helper function --- src/scripts/main.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index d38fb4152..4f30aead5 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -7,10 +7,7 @@ function sortList(list) { const items = [...list.querySelectorAll('li')]; items.sort((a, b) => { - const aSalary = a.dataset.salary.replace(/[$,]/g, ''); - const bSalary = b.dataset.salary.replace(/[$,]/g, ''); - - return bSalary - aSalary; + return parseSalary(a) - parseSalary(b); }); list.append(...items); @@ -20,11 +17,12 @@ function getEmployees(list) { const items = [...list.querySelectorAll('li')]; const persons = items.map((item) => { - const person = { name: item.textContent.trim() }; - - for (const key of Object.keys(item.dataset)) { - person[key] = item.dataset[key]; - } + const person = { + name: item.textContent.trim(), + salary: parseSalary(item), + age: +item.dataset.age, + position: item.dataset.position, + }; return person; }); @@ -32,5 +30,9 @@ function getEmployees(list) { return persons; } +function parseSalary(element) { + return Number(element.dataset.salary.replace(/[$,]/g, '')); +} + sortList(listNode); getEmployees(listNode); From b423133741443752ce5758ad7229756dc57664f5 Mon Sep 17 00:00:00 2001 From: Mykhailo Oliinyk Date: Mon, 1 Jun 2026 14:51:37 +0300 Subject: [PATCH 3/3] fixed order in sort function --- src/scripts/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index 4f30aead5..4664c274f 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -7,7 +7,7 @@ function sortList(list) { const items = [...list.querySelectorAll('li')]; items.sort((a, b) => { - return parseSalary(a) - parseSalary(b); + return parseSalary(b) - parseSalary(a); }); list.append(...items);