From 3804e61748562d97a07c28a455c20e20c0b0a7a2 Mon Sep 17 00:00:00 2001 From: ptrodion Date: Fri, 26 Jun 2026 22:05:49 +0100 Subject: [PATCH 1/2] add task solution --- src/scripts/main.js | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index a765fdb1d..fc451b449 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,3 +1,45 @@ 'use strict'; -// write code here +const elementParent = document.querySelector('ul'); +const elementsLi = elementParent.querySelectorAll('li'); +const elemListOfEmployees = Array.from(elementsLi); + +const parseSalary = (salaryStr) => { + if (!salaryStr) { + return 0; + } + + return Number(salaryStr.replace(/[^0-9.]/g, '')) || 0; +}; + +const arrayListOfEmployees = elemListOfEmployees.map((employee) => { + const { position, salary, age } = employee.dataset; + const employeeName = employee.textContent.trim(); + + return { + name: employeeName, + position, + salary, + age, + }; +}); + +const sortedBySalary = arrayListOfEmployees.sort( + (a, b) => parseSalary(b.salary) - parseSalary(a.salary), +); + +const newListHTML = sortedBySalary + .map((user) => { + return ` +
  • + ${user.name} +
  • + `; + }) + .join(''); + +elementParent.innerHTML = newListHTML; From 1b59aaa39e8be58c798e0b7b1aaa5a36b0454fc5 Mon Sep 17 00:00:00 2001 From: ptrodion Date: Fri, 26 Jun 2026 22:19:36 +0100 Subject: [PATCH 2/2] add task solution-2 --- src/scripts/main.js | 66 ++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/src/scripts/main.js b/src/scripts/main.js index fc451b449..fd1165628 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1,8 +1,6 @@ 'use strict'; -const elementParent = document.querySelector('ul'); -const elementsLi = elementParent.querySelectorAll('li'); -const elemListOfEmployees = Array.from(elementsLi); +const employeesList = document.querySelector('ul'); const parseSalary = (salaryStr) => { if (!salaryStr) { @@ -12,34 +10,34 @@ const parseSalary = (salaryStr) => { return Number(salaryStr.replace(/[^0-9.]/g, '')) || 0; }; -const arrayListOfEmployees = elemListOfEmployees.map((employee) => { - const { position, salary, age } = employee.dataset; - const employeeName = employee.textContent.trim(); - - return { - name: employeeName, - position, - salary, - age, - }; -}); - -const sortedBySalary = arrayListOfEmployees.sort( - (a, b) => parseSalary(b.salary) - parseSalary(a.salary), -); - -const newListHTML = sortedBySalary - .map((user) => { - return ` -
  • - ${user.name} -
  • - `; - }) - .join(''); - -elementParent.innerHTML = newListHTML; +const sortList = (list) => { + const items = Array.from(list.querySelectorAll('li')); + + items.sort((a, b) => { + const salaryA = parseSalary(a.dataset.salary); + const salaryB = parseSalary(b.dataset.salary); + + return salaryB - salaryA; + }); + + items.forEach((item) => list.appendChild(item)); +}; + +const getEmployees = (list) => { + const items = Array.from(list.querySelectorAll('li')); + + return items.map((item) => { + const { position, salary, age } = item.dataset; + const employeeName = item.textContent.trim(); + + return { + name: employeeName, + position, + salary, + age, + }; + }); +}; + +sortList(employeesList); +getEmployees(employeesList);