diff --git a/README.md b/README.md index 294f077fb..3d71e8003 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://MarcelloTar.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..47bd2e947 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,39 @@ 'use strict'; // write code here + +const ul = document.querySelector('ul'); +const lists = document.querySelectorAll('li'); + +function sortList(list) { + const items = [...list].sort((a, b) => { + const ASalary = conversionToANumber(a.dataset.salary); + const BSalary = conversionToANumber(b.dataset.salary); + + return BSalary - ASalary; + }); + + ul.innerHTML = ''; + + items.forEach((item) => { + ul.append(item); + }); +} + +function getEmployees(list) { + return [...list].map((item) => { + return { + ...item.dataset, + salary: +item.dataset.salary.slice(1).replaceAll(',', ''), + name: item.textContent, + }; + }); +} + +function conversionToANumber(number) { + return +number.slice(1).replaceAll(',', ''); +} + +getEmployees(lists); + +sortList(lists);