From 345c95b0f8b66d77df189eed83fcc5f313bae4de Mon Sep 17 00:00:00 2001 From: MilenType Date: Fri, 7 Feb 2025 19:58:57 +0500 Subject: [PATCH] update --- README.md | 17 +++++- css/index.css | 6 +- index.html | 2 +- js/index.js | 150 +++++++++++++++++++++++++++++++++++++++++--------- 4 files changed, 147 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index e3eba9c..164089e 100644 --- a/README.md +++ b/README.md @@ -1 +1,16 @@ -πŸš€ Π¨Π°Π±Π»ΠΎΠ½ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ для модуля "Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ JS. Π¦ΠΈΠΊΠ»Ρ‹ ΠΈ массивы" +# Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ Ρ€Π°Π±ΠΎΡ‚Π° + +## ОписаниС Π·Π°Π΄Π°Π½ΠΈΠΉ +ДинамичСски отобраТаСтся исходный список Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ². Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ хранятся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON. + +β†’ Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΡ всСх элСмСнтов списка. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС элСмСнты выставлСны Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС, Ρ‚ΠΎ этот порядок Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½. Если ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ массив совпадаСт со старым. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ: [1, 0] => [1, 0]. Π’ΠΎΠ³Π΄Π° выводится alert с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ порядок Π½Π΅ измСнился. + +β†’ Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ списка ΠΏΠΎ полю weight Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠ½Ρ†Ρ‹. + +β†’ Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сортировки ΠΏΠΎ полю color. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки отраТаСтся Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² поля «Алгоритм сортировки» (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "bubbleSort"), Π° врСмя сортировки Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² поля «ВрСмя сортировки» (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "-"). + +ВсСго Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ 2 Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«Π‘ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки»: "bubbleSort" ΠΈ "quickSort". + +β†’ Написана функция comparationColor, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ сравнСния элСмСнтов. + +β†’ Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Ρ€ΡƒΠΊΡ‚Ρ‹. Если ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ пустоС, Ρ„Ρ€ΡƒΠΊΡ‚ Π½Π΅ добавляСтся, выводится alert с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ. \ No newline at end of file diff --git a/css/index.css b/css/index.css index 82bc170..1377c88 100644 --- a/css/index.css +++ b/css/index.css @@ -127,6 +127,10 @@ main { background: #cd853f; } +.fruit_none { + background: #d79512; +} + .fruit__info { display: flex; justify-content: center; @@ -135,4 +139,4 @@ main { background: #fff; height: 100%; padding: 10px; -} +} \ No newline at end of file diff --git a/index.html b/index.html index ca1356b..5d9a519 100644 --- a/index.html +++ b/index.html @@ -122,4 +122,4 @@

πŸ₯‘ Бписок экзотичСских Ρ„Ρ€ΡƒΠΊΡ‚ - + \ No newline at end of file diff --git a/js/index.js b/js/index.js index 298d6a3..b7c2fce 100644 --- a/js/index.js +++ b/js/index.js @@ -10,6 +10,9 @@ const kindInput = document.querySelector('.kind__input'); // ΠΏΠΎΠ»Π΅ с Π½Π°Π· const colorInput = document.querySelector('.color__input'); // ΠΏΠΎΠ»Π΅ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ†Π²Π΅Ρ‚Π° const weightInput = document.querySelector('.weight__input'); // ΠΏΠΎΠ»Π΅ с вСсом const addActionButton = document.querySelector('.add__action__btn'); // ΠΊΠ½ΠΎΠΏΠΊΠ° добавлСния +const minWeight = document.querySelector('.minweight__input'); // ΠΏΠΎΠ»Π΅ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ вСсом +const maxWeight = document.querySelector('.maxweight__input'); // ΠΏΠΎΠ»Π΅ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ вСсом + // список Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ² Π² JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ let fruitsJSON = `[ @@ -29,10 +32,39 @@ let fruits = JSON.parse(fruitsJSON); const display = () => { // TODO: ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ fruitsList ΠΎΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… элСмСнтов, // Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· fruits + fruitsList.innerHTML = ''; for (let i = 0; i < fruits.length; i++) { - // TODO: Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт
  • ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ document.createElement, - // ΠΈ добавляСм Π² ΠΊΠΎΠ½Π΅Ρ† списка fruitsList ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ document.appendChild + console.log(fruits); + const newLi = document.createElement("li"); + newLi.classList.add('fruit__item'); + if (fruits[i].color == "Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ") { + newLi.classList.add('fruit_violet'); + } else + if (fruits[i].color == "Π·Π΅Π»Π΅Π½Ρ‹ΠΉ") { + newLi.classList.add('fruit_green'); + } else + if (fruits[i].color == "Ρ€ΠΎΠ·ΠΎΠ²ΠΎ-красный") { + newLi.classList.add('fruit_carmazin'); + } else + if (fruits[i].color == "ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ") { + newLi.classList.add('fruit_yellow'); + } else + if (fruits[i].color == "свСтло-ΠΊΠΎΡ€ΠΈΡ‡Π½Π΅Π²Ρ‹ΠΉ") { + newLi.classList.add('fruit_lightbrown'); + } else + newLi.classList.add('fruit_none'); + fruitsList.appendChild(newLi); // добавляСм Π² ΠΊΠΎΠ½Π΅Ρ† списка fruitsList ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ document.appendChild + + const div = document.createElement("div"); + div.classList.add('fruit__info'); + newLi.appendChild(div); // добавляСм div Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт li ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ document.appendChild + div.innerHTML = ` +
    index: ${i + 1}
    +
    kind: ${fruits[i].kind}
    +
    color: ${fruits[i].color}
    +
    weight: ${fruits[i].weight}
    + `; } }; @@ -49,18 +81,16 @@ const getRandomInt = (min, max) => { // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ массива const shuffleFruits = () => { let result = []; - - // ATTENTION: сСйчас ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π²Ρ‹ запуститС бСсконСчный Ρ†ΠΈΠΊΠ» ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ зависнСт + let newFruits = [...fruits]; //ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ масив для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° совпадСниС ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠΈ while (fruits.length > 0) { - // TODO: Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΡ массива - // - // Подсказка: Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ случайный элСмСнт ΠΈΠ· fruits, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ getRandomInt - // Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· fruits ΠΈ вставляСм Π² result. - // ex.: [1, 2, 3], [] => [1, 3], [2] => [3], [2, 1] => [], [2, 1, 3] - // (массив fruits Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡΡ, Π° result Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ) + let randomFruit = getRandomInt(0, fruits.length - 1); //Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ случайный элСмСнт ΠΈΠ· fruits, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ getRandomInt + result.push(fruits[randomFruit]); //Π²ΡΡ‚Π°Π²Π»ΡΡŽ Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹ΠΉ элСмСнт + fruits.splice(randomFruit, 1); //Π²Ρ‹Ρ€Π΅Π·Π°ΡŽ Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹ΠΉ элСмСнт } - fruits = result; + if (fruits.every((el, index) => el === newFruits[index])) { + alert("Новый массив ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°ΠΉΡ‚Π΅ Π΅Ρ‰Ρ‘ Ρ€Π°Π·!"); + } }; shuffleButton.addEventListener('click', () => { @@ -72,9 +102,19 @@ shuffleButton.addEventListener('click', () => { // Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ массива const filterFruits = () => { - fruits.filter((item) => { - // TODO: Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ + if (isNaN(maxWeight.value) || isNaN(minWeight.value) || maxWeight.value == '' || minWeight.value == '' || maxWeight.value < 0 || minWeight.value < 0) { + alert('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ значСния вСса'); + minWeight.value = ""; + maxWeight.value = ""; + return fruits; + }; + let result = fruits.filter((item) => { + if (parseInt(maxWeight.value) < parseInt(minWeight.value)) { + [maxWeight.value, minWeight.value] = [minWeight.value, maxWeight.value]; // ЗначСния ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами Ссли max мСньшС min. + } + return ((item.weight >= parseInt(minWeight.value)) && (item.weight <= parseInt(maxWeight.value))); }); + fruits = result; }; filterButton.addEventListener('click', () => { @@ -88,24 +128,65 @@ let sortKind = 'bubbleSort'; // инициализация состояния Π² let sortTime = '-'; // инициализация состояния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сортировки const comparationColor = (a, b) => { - // TODO: Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сравнСния Π΄Π²ΡƒΡ… элСмСнтов ΠΏΠΎ Ρ†Π²Π΅Ρ‚Ρƒ + // функция сравнСния Π΄Π²ΡƒΡ… элСмСнтов ΠΏΠΎ Ρ†Π²Π΅Ρ‚Ρƒ + const priority = ['ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ', 'Π·Π΅Π»Π΅Π½Ρ‹ΠΉ', 'Ρ€ΠΎΠ·ΠΎΠ²ΠΎ-красный', 'свСтло-ΠΊΠΎΡ€ΠΈΡ‡Π½Π΅Π²Ρ‹ΠΉ', 'Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ'] + const priority1 = priority.indexOf(a.color); + const priority2 = priority.indexOf(b.color); + return priority1 > priority2; }; + const sortAPI = { - bubbleSort(arr, comparation) { - // TODO: Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сортировки ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ + bubbleSort(arr, comparationColor) { + // функция сортировки ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ + const n = arr.length; + // внСшняя итСрация ΠΏΠΎ элСмСнтам + for (let i = 0; i < n - 1; i++) { + // внутрСнняя итСрация для пСрСстановки элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† массива + for (let j = 0; j < n - 1 - i; j++) { + // сравниваСм элСмСнты + if (comparationColor(arr[j], arr[j + 1])) { + // Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ±ΠΌΠ΅Π½ элСмСнтов + let temp = arr[j + 1]; + arr[j + 1] = arr[j]; + arr[j] = temp; + } + } + } + return arr; }, - quickSort(arr, comparation) { - // TODO: Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ быстрой сортировки + + // Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрой сортировки + quickSort(arr, comparationColor) { + console.log(arr); + // УсловиС остановки, Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· рСкурсии, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅ΠΌ массив с 1 элСмСнтом + if (arr.length < 2) { return arr; } + // Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ элСмСнт + let pivot = arr[0]; + // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ массивы для Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ мСньшС ΠΈ большС ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ + let left = []; + let right = []; + // ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ всСм элСмСнтам ΠΈΠ· массива ΠΈ разносим ΠΈΡ… Π² массивы созданныС Ρ€Π°Π½Π΅Π΅ согласно ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, большС ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ - Π² ΠΏΡ€Π°Π²Ρ‹ΠΉ, мСньшС - Π² Π»Π΅Π²Ρ‹ΠΉ + for (let i = 1; i < arr.length; i++) { + if (comparationColor(pivot, arr[i])) { + left.push(arr[i]); + } else { + right.push(arr[i]); + } + } + arr = [...sortAPI.quickSort(left, comparationColor), pivot, ...sortAPI.quickSort(right, comparationColor)]; + return arr; }, + // выполняСт сортировку ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ - startSort(sort, arr, comparation) { + startSort(sort, fruits, comparationColor) { const start = new Date().getTime(); - sort(arr, comparation); + const sorted = sort(fruits, comparationColor); const end = new Date().getTime(); sortTime = `${end - start} ms`; + return sorted; }, }; @@ -114,21 +195,40 @@ sortKindLabel.textContent = sortKind; sortTimeLabel.textContent = sortTime; sortChangeButton.addEventListener('click', () => { - // TODO: ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sortKind ΠΌΠ΅ΠΆΠ΄Ρƒ 'bubbleSort' / 'quickSort' + // ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sortKind ΠΌΠ΅ΠΆΠ΄Ρƒ 'bubbleSort' / 'quickSort' + if (sortKind === 'bubbleSort') { + sortKind = 'quickSort'; + } else sortKind = 'bubbleSort'; + sortKindLabel.textContent = sortKind; }); sortActionButton.addEventListener('click', () => { - // TODO: вывСсти Π² sortTimeLabel Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'sorting...' + sortTimeLabel.textContent = 'sorting...'; const sort = sortAPI[sortKind]; sortAPI.startSort(sort, fruits, comparationColor); + fruits = sortAPI.quickSort(fruits, comparationColor); display(); - // TODO: вывСсти Π² sortTimeLabel Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sortTime + sortTimeLabel.textContent = sortTime; }); /*** Π”ΠžΠ‘ΠΠ’Π˜Π’Π¬ ЀРУКВ ***/ addActionButton.addEventListener('click', () => { - // TODO: созданиС ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Ρ€ΡƒΠΊΡ‚Π° Π² массив fruits + // созданиС ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Ρ€ΡƒΠΊΡ‚Π° Π² массив fruits // Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния Π±Π΅Ρ€Π΅ΠΌ ΠΈΠ· kindInput, colorInput, weightInput + if (kindInput.value === "" || colorInput.value === "" || weightInput.value === "") { + alert('Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ всС поля!') + } else { + if ((weightInput.value < 0) || isNaN(weightInput.value)) { + alert('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ вСса (Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число)!') + weightInput.value = ""; + } else { + fruits.push({ "kind": kindInput.value, "color": colorInput.value, "weight": weightInput.value }); + display(); + kindInput.value = ""; + colorInput.value = ""; + weightInput.value = ""; + } + } display(); -}); +}); \ No newline at end of file