10 Javascript задач с массивами
В основном, эта статья может быть полезна junior или middle Javascript разработчикам. Я подготовил десять задач с массивами, которые, я надеюсь, позволят вам улучшить свои навыки.
К каждой задаче вы найдете описание, ожидаемый результат и решение. Я не утверждаю, что мои примеры это наилучший и единственный вариант для решения каждой задачи, но я надеюсь, что они помогут вам, если вы застрянете на одной из них.
Также, я хотел бы упомянуть, что я не обрабатываю все возможные варианты ошибок, такие как передача undefined, null или неверных типов данных. Я предоставляю только базовое решение, а не пишу библиотеку утилит.
Вы можете начать работу в своем репозитории или клонировать мой. В моем репозитории вы найдете полный список задач и решений к ним. Также вы сможете проверить ваши решения с помощью заранее подготовленных unit-тестов. Ссылка на репозиторий: https://github.com/andrewborisov/javascript-practice.
- Fill. Напишите функцию, которая заполняет новый массив предоставленным значением.
/**
* Описание задачи: Напишите функцию, которая заполняет новый массив предоставленным значением.
* Ожидаемый результат: (3, 'a') => ['a', 'a', 'a']
* Сложность задачи: 1 of 5
* @param {number} arraySize - размер массива
* @param {?} value - значение для массива
* @returns {Array}
*/
const fill = (arraySize, value) => {
throw new Error('Напишите здесь свое решение');
}
const data = 3;
const valueToFill = 'a';
console.log(fill(data, valueToFill)) // ['a', 'a', 'a']
- Reverse. Напишите функцию, которая разворачивает массив в обратном порядке. Пожалуйста, не используйте
array.reverse()
, чтобы сделать задачу более интересной.
/**
* Описание задачи: Напишите функцию, которая разворачивает массив в обратном порядке.
* Ожидаемый результат: [1, 2, 3] => [3, 2, 1]
* Сложность задачи: 1 of 5
* @param {Array} array - Массив любых элементов
* @returns {Array}
*/
const reverse = (array) => {
throw new Error('Напишите здесь свое решение');
}
const data = [1, 2, 3];
console.log(reverse(data)); // [3, 2, 1]
- Compact. Напишите функцию, которая очищает массив от нежелательных значений, таких как false, undefined, пустые строки, ноль, null.
/**
* Описание задачи: Напишите функцию, которая очищает массив от нежелательных значений, таких как false, undefined, пустые строки, ноль, null.
* Ожидаемый результат: [0, 1, false, 2, undefined, '', 3, null] => [1, 2, 3]
* Сложность задачи: 1 of 5
* @param {Array} array - Массив любых элементов
* @returns {Array}
*/
const compact = (array) => {
throw new Error('Напишите здесь свое решение');
}
const data = [0, 1, false, 2, undefined, '', 3, null];
console.log(compact(data)) // [1, 2, 3]
- From Pairs. Напишите функцию, которая возвращает объект, составленный из значений вложенных массивов. Первое элемент массива - ключ, второй - зачение.
/**
* Описание задачи: Напишите функцию, которая возвращает объект, составленный из значений вложенных массивов. Первое значение - ключ, второе - зачение.
* Ожидаемый результат: [['a', 1], ['b', 2]] => { a: 1, b: 2 }
* Сложность задачи: 2 of 5
* @param {Array} array - массив, значения которого массивы пар
* @returns {Array}
*/
const fromPairs = (array) => {
throw new Error('Напишите здесь свое решение');
}
const data = [['a', 1], ['b', 2]];
console.log(fromPairs(data)) // { 'a': 1, 'b': 2 }
- Without. Напишите функцию, возвращает новый массив без предоставленных значений. Используйте примитивные типы.
/**
* Описание задачи: Напишите функцию, возвращает новый массив без предоставленных значений. Используйте примитивные типы.
* Ожидаемый результат: [1, 2, 3, 1, 2] без 1, 2 => [3]
* Сложность задачи: 2 of 5
* @param {Array} array - Массив с примитивными значениями
* @param {?} args - лист значений для удаления
* @returns {Array}
*/
const without = (array, ...args) => {
throw new Error('Напишите здесь свое решение');
}
const data = [1, 2, 3, 1, 2];
console.log(without(data, 1, 2)); // [3]
- Unique. Напишите функцию, которая убирает повторяющиеся значения.
/**
* Описание задачи: Напишите функцию, которая убирает повторяющиеся значения.
* Ожидаемый результат: [1, 2, 3, 1, 2] => [1, 2, 3]
* Сложность задачи: 2 of 5
* @param {Array<string | number>} array - Массив с примитивными значениями
* @returns {Array}
*/
const unique = (array) => {
throw new Error('Напишите здесь свое решение');
}
const data = [1, 2, 1, 2, 3];
console.log(unique(data)); // [1, 2, 3]
- IsEqual. Напишите функцию, которая сравнивает два массива и возвращает true, если они идентичны.
/**
* Описание задачи: Напишите функцию, которая сравнивает два массива и возвращает true, если они идентичны.
* Ожидаемый результат: ([1, 2, 3], [1, 2, 3]) => true
* Сложность задачи: 2 of 5
* @param {Array} firstArray - Массив с примитивными значениями
* @param {Array} secondArray - Массив с примитивными значениями
* @returns {boolean}
*/
const isEqual = (firstArray, secondArray) => {
throw new Error('Напишите здесь свое решение');
}
const arr1 = [1, 2, 3, 4];
const arr2 = [1, 2, 3, 4];
const arr3 = [1, 2, 3, 5];
const arr4 = [1, 2, 3, 4, 5];
console.log(isEqual(arr1, arr2)); // true
console.log(isEqual(arr1, arr3)); // false
console.log(isEqual(arr1, arr4)); // false
- Flatten. Напишите функцию, которая преобразует глубокий массив в одномерный. Пожалуйста, не используйте
array.flat()
, чтобы сделать задачу интереснее.
/**
* Описание задачи: Напишите функцию, которая преобразует глубокий массив в одномерный.
* Ожидаемый результат: [1, 2, [3, 4, [5]]] => [1, 2, 3, 4, 5]
* Сложность задачи: 3 of 5
* @param {Array} array - Глубокий массив
* @returns {Array}
*/
const flatten = (array) => {
throw new Error('Напишите здесь свое решение');
}
const data = [1, 2, [3, 4, [5]]];
console.log(flatten(data)); // [1, 2, 3, 4, 5]
- Chunk. Напишите функцию, которая разделяет массив на части заданного размера.
/**
* Описание задачи: Напишите функцию, которая разделяет массив на части заданного размера.
* Ожидаемый результат: ([1, 2, 3, 4, 5], 2) => [[1, 2], [3, 4], [5]]
* Сложность задачи: 3 of 5
* @param {Array} array - Массив элементов
* @param {number} size - Размер чанков
* @returns {Array}
*/
const chunk = (array, size) => {
throw new Error('Напишите здесь свое решение');
}
const data = [1, 2, 3, 4, 5, 6, 7];
console.log(chunk(data, 2)) // [[1, 2], [3, 4], [5, 6], [7]]
console.log(chunk(data, 3)) // [[1, 2, 3], [4, 5, 6], [7]]
- Intersection. Напишите функцию, которая создаст массив из уникальных значений, которые есть в каждом из предоставленных массивов. Используйте примитивные типы данных.
/**
* Описание задачи: Напишите функцию, которая создаст массив из уникальных значений, которые есть в каждом из предоставленных массивов.
* Ожидаемый результат: ([1, 2], [2, 3]) => [2]
* Сложность задачи: 4 of 5
* @param {?} arrays - Массив примитивных значений
* @returns {Array}
*/
const intersection = (...arrays) => {
throw new Error('Напишите здесь свое решение');
}
const arr1 = [1, 2];
const arr2 = [2, 3];
const arr3 = ['a', 'b'];
const arr4 = ['b', 'c'];
const arr5 = ['b', 'e', 'c'];
const arr6 = ['b', 'b', 'e'];
const arr7 = ['b', 'c', 'e'];
const arr8 = ['b', 'e', 'c'];
console.log(intersection(arr1, arr2)) // [2]
console.log(intersection(arr3, arr4, arr5)) // ['b']
console.log(intersection(arr6, arr7, arr8)) // ['b', 'e']
Я думаю, что практика решения задач позволит вам значительно улучшить навыки. Лично для меня важно узнавать что-то новое каждый день.
Я надеюсь, что предоставленный список задач позволит и вам узнать что-то новое или хотя бы развлечься.
Что дальше?
Если вам понравилась эта подборка задач, то я подготовил еще десять задач на объекты.
Мой канал о javascript и веб-разработке в целом: https://t.me/js_web_development