Этот вопрос проверяет знание встроенных структур данных JavaScript, их характеристик и практического применения в различных сценариях разработки.
В JavaScript существуют примитивные типы (числа, строки, булевы значения) и объектные структуры данных. Основные структуры включают массивы для упорядоченных коллекций, объекты для хранения ключ-значение пар, множества для уникальных значений и карты для любых типов ключей. Каждая структура имеет свои методы и оптимальные сценарии использования.
Number: целые и дробные числа
String: текстовые данные
Boolean: логические значения true/false
Undefined: неопределенное значение
Null: явное отсутствие значения
Symbol: уникальные идентификаторы
BigInt: большие целые числа
javascript
// Создание и работа с массивом
const fruits = ['apple', 'banana', 'orange'];
fruits.push('grape'); // Добавление элемента
fruits.pop(); // Удаление последнего элемента
// Методы массива
fruits.map(fruit => fruit.toUpperCase());
fruits.filter(fruit => fruit.length > 5);
fruits.reduce((acc, fruit) => acc + fruit.length, 0);Характеристики:
Упорядоченная коллекция элементов
Индексация с 0
Динамический размер
Гетерогенные элементы (разные типы)
javascript
// Создание объекта
const person = {
name: 'John',
age: 30,
isStudent: false
};
// Доступ к свойствам
console.log(person.name); // John
person.city = 'New York'; // Добавление свойства
// Итерация по свойствам
for (let key in person) {
console.log(key, person[key]);
}Характеристики:
Коллекция ключ-значение
Ключи - строки или Symbol
Не гарантирует порядок свойств
Прототипное наследование
javascript
// Работа с Set
const uniqueNumbers = new Set([1, 2, 3, 2, 1]);
uniqueNumbers.add(4); // Добавление элемента
uniqueNumbers.has(3); // Проверка наличия - true
uniqueNumbers.delete(2); // Удаление элемента
// Преобразование в массив
const arrayFromSet = Array.from(uniqueNumbers);Характеристики:
Коллекция уникальных значений
Быстрая проверка наличия элемента
Сохраняет порядок добавления
javascript
// Использование Map
const userMap = new Map();
userMap.set('id', 123);
userMap.set(42, 'answer');
userMap.set({}, 'object key');
// Получение значений
console.log(userMap.get('id')); // 123
console.log(userMap.size); // 3
// Итерация
for (let [key, value] of userMap) {
console.log(key, value);
}Характеристики:
Коллекция ключ-значение с любыми типами ключей
Сохраняет порядок добавления
Лучшая производительность для частых операций добавления/удаления
Слабые ссылки (не предотвращают сборку мусора)
Ключи только объекты
Не итерируемы
Используются для метаданных
Бинарные данные
Фиксированная длина
Используются для работы с файлами, сетью
Object: строковые ключи, прототип, JSON-совместимость
Map: любые ключи, порядок сохранения, лучшая производительность для частых изменений
Array: дубликаты разрешены, порядок по индексу, методы для манипуляций
Set: только уникальные значения, быстрый поиск, простые операции
Вывод: Выбор структуры данных зависит от конкретной задачи - массивы для упорядоченных данных, объекты для структурированной информации, Set для уникальности, Map для сложных ключей.