From 6a90e8697e31fdf5478c94af7298959863035104 Mon Sep 17 00:00:00 2001 From: Daniil Date: Wed, 4 Nov 2026 01:15:19 +0200 Subject: [PATCH 1/2] first commit --- README.md | 6 +++--- src/scripts/main.js | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 294f077fb..f8edfd737 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://DaniilDanilyuk.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..00190125b 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,44 @@ 'use strict'; -// write code here +function intoValue(str) { + return Number(str.replace('$', '').replaceAll(',', '')); +} + +const list = document.querySelector('ul'); + +function sortList(ulElement) { + const arrOfElement = [...ulElement.querySelectorAll('[data-salary]')]; + + arrOfElement.sort( + (a, b) => + intoValue(a.getAttribute('data-salary')) - + intoValue(b.getAttribute('data-salary')), + ); + + for (const element of arrOfElement) { + ulElement.prepend(element); + } +} + +function getEmployees(ulElement) { + const arrOfElement = [...ulElement.querySelectorAll('[data-salary]')]; + const arrOfNewObjects = []; + + for (const element of arrOfElement) { + const newObj = { + name: element.textContent.trim(), + position: element.getAttribute('data-position'), + salary: intoValue(element.getAttribute('data-salary')), + age: Number(element.getAttribute('data-age')), + }; + + arrOfNewObjects.push(newObj); + } + + return arrOfNewObjects; +} + +sortList(list); +getEmployees(list); + +console.log(getEmployees(list)); From 9c02d427b6f6447d036ff8766db664acd7cfeba4 Mon Sep 17 00:00:00 2001 From: Daniil Date: Wed, 4 Nov 2026 01:18:39 +0200 Subject: [PATCH 2/2] second commit --- src/scripts/main.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index 00190125b..228bf780f 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -11,12 +11,12 @@ function sortList(ulElement) { arrOfElement.sort( (a, b) => - intoValue(a.getAttribute('data-salary')) - - intoValue(b.getAttribute('data-salary')), + intoValue(b.getAttribute('data-salary')) - + intoValue(a.getAttribute('data-salary')), ); for (const element of arrOfElement) { - ulElement.prepend(element); + ulElement.append(element); } } @@ -40,5 +40,3 @@ function getEmployees(ulElement) { sortList(list); getEmployees(list); - -console.log(getEmployees(list));