Набори, колекції
Не все то масив, що багато.
Виведіть в консоль наступні об'єкти, дослідіть їх:
let p = document.getElementsByTagName('p'),
h2 = document.getElementsByClassName('arr-test');
console.dir([]);
console.dir(p);
console.dir(h2[0].classList);
Всі ці елементи можна перебирати через цикли, всі вони мають властивість .length, але набір методів у кожного свій.
Повний набір методів мають лише повноцінні масиви та об'єкти, створені з масивів.
Перевіряйте прототипи елементів, щоб з'ясувати - чи можна до них застосувати той чи інший метод.
З любого набора, колекції можна створити масив, для того, щоб скористатися методами масива:
let p = document.getElementsByTagName('p'),
pa = [];
for (let i = 0; i < p.length; i++) {
pa.push(p[i]);
}
Виведіть повідомлення який саме об'єкт передано в функцію: масив чи об'єкт.
let a = []
b = {};
console.log(typeof a);
console.log(typeof b);
fun(a);
fun(b);
function fun(n) {
if ( ... ) {
alert('Масив');
} else {
alert('Об\'єкт');
}
}
Домашнє завдання
-
Створити масиви і вивести їх в консоль:
- з 20 випадкових дробових чисел від 0 до 1;
- з 30 випадкових цілих чисел від 1 до 100;
- з трьох строк тексту випадкової довжини від 8 до 16 символів;
- з 6-и чисел, що відповідають кодам символів строки "Hello!" -
Створіть циклом масив з цифр [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024].
Спробуйте створити цей масив використовуючи тільки лічильник, без додаткових змінних. -
Створити двовимірний масив 10х10 випадкових чисел від 1 до 10.
Підрахувати: середнє значення всіх цифр, мінімальне та максимальне значення сумм цифр у колонках і рядках. -
Перевірте, що ваша функція, яка видає випадкове число від 50 до 100, працює правильно: викличте її 50 мільйонів разів та переконайтеся, що кожне число випало приблизно 1 мільйон разів.
Особливу увагу приділіть першому та останньому числу (50 та 100).
Строго кажучи, в даному випадку вірогідність випадання кожного числа - 980 тисяч, оскільки в проміжку [50..100] є 51 число і 50 млн. / 51 = 0,98 млн. -
Створіть циклом масив з 5 трійок. Змініть перший елемент на пустий масив, а другий - на слово "ківі".
Додайте 7-й елемент, виведіть масив в консоль.
Ініціалізуйте 6-й елемент підмасивом з 5 трійок найоптимальнішим способом.
Результат виведіть в консоль. -
Дано масив чисел:
[5, 10, 15, 7, 9, 12, 4, 2, 1]Виведіть в консоль масив посортований в прямому та зворотньому порядку не застосовуючи метод .reverse().
Створіть масив строк кольорів райдуги, посортуйте їх у прямому та зворотньому напрямку. -
Прграмно створіть двовимірний масив mAs 3*3 заповнений числами - результатом множення номера рядка на номер колонки (комірки).
В другий рядок добавте на початок 5, а в кінець - 7.
Переберіть масив методом forEach, виведіть в консоль матрицю з цифр 0 чи 1 в залежності від того - непарне чи парне число.
Виведіть в консоль.
З першого рядка вилучіть та збережіть у змінну останній елемент, а з третього рядка - другий елемент.
З середнього рядка вилучіть другий елемент і замініть його двома новими елементами, які ви вилучили перед цими.
В консоль виведіть масив, а також добуток третього вилученого елемента з дргим елементом, який піднятий до степеня першого елемента. - Створіть масив строк з обласних центрів України. Посортуйте їх в прямому порядку по другій літері, в зворотньому напрямку - по останній, результати виведіть в консоль.
-
Задано масив:
[7, 2, "35", 1, 16, 8, "html", 's', 99]Потрібно:
- видалити з масива строкові дані (пошук строкових значень здійснити програмно);
- добавити числа 5 і 40;
- відсортувати масив за зростанням;
- вивести результат в консоль. -
Дано 2 масива з 5 елементів кожен, в яких знаходяться строкові значення кольорів (виберіть довільні, але щоб не дублювалися на одних і тих же місцях в обох масивах).
В html створіть список <ul id="list"> з п'ятьох елементів, з іменами героїв вашого улюбленого телешоу, серіалу, улюблених страв...
Програмно добавте нумерацію рядків до списка і крапку з комою - в кінці рядка:1) Minecraft;Спробуйте зробити, щоб останній пункт закінчувався крапкою.
2) Counter Strike;
...
Доступ до елементів списку здійсніть так:let li = document.getElementById('list').children;Пофарбуйте колір тексту елементів списку у кольори з першого масиву, а бекграунди задайте кольорами з другого масиву:element.style.color = "green";Добавте ще елементів у список та модифікуйте скрипт, щоб він циклічно зафарбовував елементи (достатньо мінімальних змін).
element.style.backgroundColor = "white"; -
Створити 3-вимірний масив 4*4*4 елементів, записати в нього перші 64 простих чисел, починаючи з 13.
Функцію пошуку простих чисел постарайтесь оптимізувати, щоб вона не перевіряла парні числа, і ті, що діляться на 3 та 5.
Додаткові завдання.
-
На сайті зареєструвалися юзери в такій послідовності:
ТатарчукСервер присилає список користувачів у вигляді масиву в порядку їх реєстрації (по ідентифікатору в базі даних).
Їжачкова
Гаврилюк
Оберман
SирeгНаɔkǝг
Саксаганський
Миловська
Аніськов
Єфремов
Стробольський
Ґрант
Кацман
Ступова
Шамінська
Вороний
Ігнатьєва
Відображенням результату на клієнті займається функція userTable(a), що приймає в себе масив.
Підкогуйте масив, відсортувавши імена по алфавіту. - Переберіть всіх користувачів та виводьте в консоль кожне прізвище, в якому є м'який знак.
-
Знайдіть серед користувачів першу, у якої прізвище закінчується на ова, єва, ка, запишіть її прізвище у змінну, щоб роздрукувати у запиті СБУ.
Знайдіть індекс користувача з прізвищем на букву С, сьогодні акція, йому на рахунок треба зачислити 5 уно-баксів. -
На сайті є анкета, довкола кожної літери прізвища малюються квадратики.
Створіть масив чисел по кількості букв кожного прізвища. -
Сервер надсилає на клієнт масив цін на продукцію (придумайте довільний масив чисел чи згенеруйте функцією).
На клієнті потрібно відобразити продукти від дорогого до дешевого, зробивши 12%-у накрутку на товари.
Якщо ціна товара починається на 2 - діє 10%-а знижка на цю одиницю товара.
Відсортуйте масив цін по спаданню, враховуючи накрутку та знижки.
Виведіть в <p> відсортований список цін через кому-пробіл.
(В реальних випадках клієнт отримує масив об'єктів та знижка надається по іншим критеріям, наприклад, по дню тижня). -
Створіть функцію, що емулює запит до сервера: видає кількість лайків до 10 постів (рандомні значення 0..100)
Користувач налаштував собі відображення 35 постів на екран.
Ваша задача - посортувати пости по популярності (кількості лайків). -
Сервер присилає список запчастин, що є на складі.
На клієнті потрібно перевірити, чи є дана запчастина на складі, і видати користувачу підтвердження або заперечення.
Пошук повинен бути нечуттєвим до регістру. Регулярні вирази тут використовувати не треба. -
Користувачу потрібно дати посилання на сторінку замовлення запчастини виду:
http://zapchasti.abc/z###
створіть таку строку URL, в якій замість ### буде індекс запчастини. -
Сервер присилає список, сортований від дешевих до дорогих ноутбуків різних марок, модель та ціну (доповніть список самі):
Nocia, RG-17, 3600Користувач шукає ноутбук фірми Nocia, потрібно відобразити рекламу найдорожчого ноутбука цієї марки.
Samgun, KX-a56, 4500
Nocia, RG-19, 4800
Arec, Slim-T, 5330
Nocia, RG-20, 5650
Arec, Ultra-T, 6200
...
Передайте характеристики цього ноутбука в умовну функцію showAd(nout). -
Створіть масив з 26 літер 'a' (англійська).
Циклом замініть елементи з 2 по 26-й, щоб утворився масив з алфавітом.
Спробуйте зробити те саме зі строками. -
Сервер прислав дані про ціни 50 товарів.
Користувач проглядає третю сторінку, де відображено 10 товарів.
Потрібно створити масив цін товарів для цієї сторінки і передати в функцію showTovars(a); -
Є у нас картярська гра, на столі ряд карт:
4чКористувач забрав 7 хрестову і поклав на її місце 10 бубну та 6 пікову.
7х
8б
Вх
Дп
10х
Тп
2ч
Користувач забрав 10 хреству та туз піковий.
Користувач перед валетом поклав 2 і 3 червові.
Виведіть в консоль остаточний результат. -
Створіть функцію, що повертає діаметр заготовки (болванки) в межах 49,5..51,5 мм.
На складі є 52 заготовки.
Поступило 4 заготовки.
7 заготовок відправилися на обробку (станку потрібно знати їх діаметр).
Прийшов підприємець Василь, приніс 6 заготовок і два по півлітра, попросив обробити якнайшвидше, але не світити перед начальством, поставити десь їх в глибині склада.
На склад привезли 3 заготовки з паладія і наказ - їх обробити в першу чергу!
Прийшов токар Вася з візком на 6 деталей, йому кладовщик Грыша розказав про наказ і про півлітри. Вася за півлітри погодився поточити деталі, але спершу все ж таки взяв паладієві заготовки і ті, що лежали поруч.
Через пару годин Вася знову зайшов за заготовками, отримавши у нагороду півлітри.
Що залишилося на складі? - Добавте в попередню задачу функцію, що відбраковує заготовки: ті, що менше 50 мм. - потрібно перевезти на інший склад.
-
Поштове відділення. Дано шафу з полицями: 5 полиць в ряд і 8 рядів. На кожній полиці - від 0 до 50 конвертів.
Потрібно отримати масив про наявніст вільних місць на полицях, якщо на одну полицю поміщається 50 конвертів.
Чи є хоч одна полиця порожня?
Чи на всіх полицях не менше двох листів?