Get In Touch
admin@victoriaweb.me
Back

Практичні задачі по масивах в JavaScript

Робота з масиви та обєктами є частина щоденної рутини frontend розробника. Вони широко використовуються для роботи з даними: список зареєстрованих користувачів сайту, список товарів і послуг і тому подібне. Так як робота з масивами даних – основа ефективного функціонування будь якого комерційного сайту, тому набуття практичних навичок з маніпуляції цими обєктами є важливою для розробників. Нижче будуть наведені приклади масивів та обєктів у форматі: теорія + приклад коду + пояснення прикладу.

Трішки теорії – основи масивів в JavaScript

Масив — це структура даних, яка дозволяє зберігати кілька значень в одній змінній. Значення в масиві називаються елементами, і кожен елемент має свій індекс (номер позиції, починаючи з 0). Наприклад:

let fruits = ["яблуко", "банан", "апельсин"];

Як створити масив?

Літерал масиву

let numbers = [1, 2, 3, 4, 5];

Конструктор Array

let emptyArray = new Array(); // порожній масив
let colors = new Array("червоний", "синій");

Елементи масиву доступні за їх індексом:

let fruits = ["яблуко", "банан", "апельсин"];
console.log(fruits[0]); // "яблуко"
console.log(fruits[1]); // "банан"

Перебір масиву ми робим : циклом for, методом .forEach().

Пошук у масиві робим використовуючи методи масиву:

.indexOf() — повертає індекс першого входження елемента

.includes() — перевіряє, чи є елемент у масиві

Декілька важливих методів масиву:

.splice() — видаляє або додає елементи за індексом

.slice() — повертає копію частини масиву (не змінює оригінал)

.shift() — видаляє перший елемент і повертає його

.pop() — видаляє останній елемент і повертає його

.unshift() — додає елемент на початок масиву

.push() — додає елемент у кінець масиву

Переходим до основного – прості задачі по кодингу масивів

1. Знайти найбільше/найменше число в масиві
const arr = [1, 2, 3, 4, 5];
const max = Math.max(…arr);
const min = Math.min(…arr);
console.log(max, min); // 5, 1

2. Підрахувати кількість повторень елемента в масиві
const arr = [1, 2, 2, 3, 4, 4, 4];
const count = arr.filter(num => num === 4).length;
console.log(count); // 3

3. Реверс масиву
const arr = [1, 2, 3, 4, 5];
const reversed = arr.reverse();
console.log(reversed); // [5, 4, 3, 2, 1]

4. Видалити дублікати з масиву
const arr = [1, 2, 2, 3, 4, 4];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4]

5. Сортувати масив за зростанням і спаданням
const arr = [5, 2, 8, 3];
const ascending = [...arr].sort((a, b) => a - b);
const descending = [...arr].sort((a, b) => b - a);
console.log(ascending, descending); // [2, 3, 5, 8], [8, 5, 3, 2]

6. Знайти суму елементів масиву
const arr = [1, 2, 3, 4];
const sum = arr.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 10

7. Перевірити, чи всі елементи масиву позитивні
const arr = [1, 2, 3, -4];
const allPositive = arr.every(num => num > 0);
console.log(allPositive); // false

8. Перевірити, чи масив містить заданий елемент
const arr = [1, 2, 3];
const contains = arr.includes(2);
console.log(contains); // true

9. Знайти індекс заданого елемента
const arr = [1, 2, 3];
const index = arr.indexOf(2);
console.log(index); // 1

10. Об’єднати два масиви
const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = arr1.concat(arr2);
console.log(combined); // [1, 2, 3, 4]

11. Знайти перший непарний елемент масиву
const arr = [2, 4, 6, 7, 8];
const firstOdd = arr.find(num => num % 2 !== 0);
console.log(firstOdd); // 7

12. Перевірити, чи є хоча б один парний елемент
const arr = [1, 3, 5, 7];
const hasEven = arr.some(num => num % 2 === 0);
console.log(hasEven); // false

13. Знайти кількість елементів більше ніж задане число
const arr = [10, 20, 30, 40];
const count = arr.filter(num => num > 25).length;
console.log(count); // 2

14. Перевірити, чи масив є паліндромом
const arr = [1, 2, 3, 2, 1];
const isPalindrome = JSON.stringify(arr) === JSON.stringify([...arr].reverse());
console.log(isPalindrome); // true

15. Видалити всі нульові значення з масиву
const arr = [0, 1, 2, 0, 3, 0];
const filteredArr = arr.filter(num => num !== 0);
console.log(filteredArr); // [1, 2, 3]

16. Створити масив квадратів чисел
const arr = [1, 2, 3, 4];
const squares = arr.map(num => num ** 2);
console.log(squares); // [1, 4, 9, 16]

17. Обчислити добуток елементів масиву
const arr = [1, 2, 3, 4];
const product = arr.reduce((acc, curr) => acc * curr, 1);
console.log(product); // 24

18. Видалити елемент за його індексом
const arr = [1, 2, 3, 4];
const indexToRemove = 2;
const newArr = arr.filter((_, index) => index !== indexToRemove);
console.log(newArr); // [1, 2, 4]

19. Перетворити масив у рядок
const arr = ['Hello', 'World'];
const str = arr.join(' ');
console.log(str); // "Hello World"

20. Створити масив із унікальних об’єктів за ключем
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
const unique = Array.from(new Map(arr.map(obj => [obj.id, obj])).values());
console.log(unique); // [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]

21. Знайти елемент із максимальним значенням властивості
const arr = [{ value: 10 }, { value: 15 }, { value: 5 }];
const maxItem = arr.reduce((prev, curr) => (prev.value > curr.value ? prev : curr));
console.log(maxItem); // { value: 15 }

22. Перемішати масив випадковим чином
const arr = [1, 2, 3, 4, 5];
const shuffled = arr.sort(() => Math.random() - 0.5);
console.log(shuffled);

23. Отримати всі можливі підмасиви
const arr = [1, 2, 3];
const subsets = (array) => {
return array.reduce((subsets, value) => subsets.concat(subsets.map(set => [...set, value])), [[]]);
};
console.log(subsets(arr)); // [[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]]

24. Знайти спільні елементи двох масивів
const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const common = arr1.filter(num => arr2.includes(num));
console.log(common); // [2, 3]

25. Розбити масив на підмасиви заданого розміру
const arr = [1, 2, 3, 4, 5];
const chunkSize = 2;
const chunks = [];
for (let i = 0; i < arr.length; i += chunkSize) {
chunks.push(arr.slice(i, i + chunkSize));
}
console.log(chunks); // [[1, 2], [3, 4], [5]]

26. Знайти другий за величиною елемент масиву
const arr = [1, 3, 4, 5, 0];
const secondMax = [...new Set(arr)].sort((a, b) => b - a)[1];
console.log(secondMax); // 4

27. Знайти відстань між найбільшим і найменшим елементами
const arr = [7, 2, 9, 4];
const distance = Math.max(...arr) - Math.min(...arr);
console.log(distance); // 7

28. Вставити елемент у заданий індекс
const arr = [1, 2, 3, 5];
const indexToInsert = 3;
arr.splice(indexToInsert, 0, 4);
console.log(arr); // [1, 2, 3, 4, 5]

29. Перетворити багатовимірний масив на одномірний
const arr = [[1, 2], [3, 4], [5]];
const flatArr = arr.flat();
console.log(flatArr); // [1, 2, 3, 4, 5]

30. Знайти всі унікальні пари чисел, сума яких дорівнює заданому числу
const arr = [1, 2, 3, 4, 5];
const target = 6;
const pairs = [];
const set = new Set();
for (const num of arr) {
const complement = target - num;
if (set.has(complement)) {
pairs.push([complement, num]);
}
set.add(num);
}
console.log(pairs); // [[2, 4], [1, 5]]

Порада

Ось кілька додаткових завдань нижче, які можуть стати чудовими прикладами для лайв-кодингу на співбесіді. Такі завдання зазвичай спрямовані на оцінку логічного мислення, креативності та вміння оптимізувати рішення:

1. Реалізувати власний метод map
Array.prototype.myMap = function(callback) {
const result = [];
for (let i = 0; i < this.length; i++) {
result.push(callback(this[i], i, this));
}
return result;
};

// Приклад використання
const arr = [1, 2, 3];
const doubled = arr.myMap(num => num * 2);
console.log(doubled); // [2, 4, 6]

2. Перевірити, чи масив є підмасивом іншого масиву
const isSubarray = (arr, sub) => {
const strArr = arr.join(',');
const strSub = sub.join(',');
return strArr.includes(strSub);
};

// Приклад
console.log(isSubarray([1, 2, 3, 4], [2, 3])); // true
console.log(isSubarray([1, 2, 3, 4], [3, 5])); // false

3. Знайти “загублений” елемент у масиві
//Дано два масиви: один із них містить усі елементи, крім одного, який "загубився". Знайти загублений елемент.
const findMissing = (arr1, arr2) => {
return arr1.find(num => !arr2.includes(num));
};

// Приклад
console.log(findMissing([1, 2, 3], [1, 3])); // 2

4. Групувати елементи масиву за значеннями
//Наприклад: групувати всі елементи парні та непарні.
const groupByParity = (arr) => {
return arr.reduce((groups, num) => {
num % 2 === 0 ? groups.even.push(num) : groups.odd.push(num);
return groups;
}, { even: [], odd: [] });
};

// Приклад
console.log(groupByParity([1, 2, 3, 4])); // { even: [2, 4], odd: [1, 3] }

5. Обертати масив на K позицій
//Обертати масив вправо або вліво на задану кількість позицій.
const rotateArray = (arr, k) => {
k = k % arr.length;
return [...arr.slice(-k), ...arr.slice(0, -k)];
};

// Приклад
console.log(rotateArray([1, 2, 3, 4, 5], 2)); // [4, 5, 1, 2, 3]

6. Реалізувати власний метод filter
Array.prototype.myFilter = function(callback) {
const result = [];
for (let i = 0; i < this.length; i++) {
if (callback(this[i], i, this)) {
result.push(this[i]);
}
}
return result;
};

// Приклад
const arr = [1, 2, 3, 4];
const filtered = arr.myFilter(num => num % 2 === 0);
console.log(filtered); // [2, 4]

7. Порахувати всі пари чисел у масиві, які дають задану суму
const countPairs = (arr, target) => {
const seen = new Set();
let count = 0;
arr.forEach(num => {
const complement = target - num;
if (seen.has(complement)) {
count++;
}
seen.add(num);
});
return count;
};

// Приклад
console.log(countPairs([1, 2, 3, 4, 3], 6)); // 2 ([2, 4], [3, 3])

8. Розгорнути частину масиву між двома індексами
const reverseSegment = (arr, start, end) => {
const reversedSegment = arr.slice(start, end + 1).reverse();
return [...arr.slice(0, start), ...reversedSegment, ...arr.slice(end + 1)];
};

// Приклад
console.log(reverseSegment([1, 2, 3, 4, 5], 1, 3)); // [1, 4, 3, 2, 5]

9. Знайти найпопулярніший елемент у масиві
const findMostFrequent = (arr) => {
const freq = arr.reduce((acc, num) => {
acc[num] = (acc[num] || 0) + 1;
return acc;
}, {});
return Object.keys(freq).reduce((a, b) => (freq[a] > freq[b] ? a : b));
};

// Приклад
console.log(findMostFrequent([1, 2, 2, 3, 3, 3])); // 3

10. Об’єднати масив, зберігаючи порядок унікальних елементів
const mergeUnique = (arr1, arr2) => {
return [...new Set([...arr1, ...arr2])];
};

// Приклад
console.log(mergeUnique([1, 2, 3], [3, 4, 5])); // [1, 2, 3, 4, 5]

Ці задачі чудово підходять для лайв-кодингу, оскільки вони тестують базові знання, логіку, а також здатність пояснювати свої дії.

Ці задачі чудово підходять для лайв-кодингу, оскільки вони тестують базові знання, логіку, а також здатність пояснювати свої дії.

Більше теорії по темі Масиви в JavaScript можна прочитати в статті, я туди все максимально написала, що треба знати по цій темі.

Victoriia Hladka
Victoriia Hladka
https://victoriaweb.me