5. Объекты

Объект (также говорят «словарь», «ассоциативный массив») — абстрактный тип данных, коллекция пар «ключ-значение», где каждый ключ уникален.

Синтаксически работа с объектами напоминает работу с обычными массивами. Вместо квадратных скобок используются фигурные, а доступ производится по ключу, а не по числовому индексу. Второй способ доступа к элементу объекта — после имени объекта через «точку» указываем ключ.

Удалить элемент из объекта: delete имя_объекта.ключ

Создание объекта: const user = { key1: value1, ‘key_2’: ‘value_2’, ‘key3’: [val1, val2] };

obj.hasOwnProperty(‘propertyName’) 

Метод hasOwnProperty принимает на вход имя проверяемого свойства и возвращает булево значение: true — если такое свойство есть в объекте, и false — если нет. Аналог в библиотеке lodash — _.has(object, path);

Обращение к несуществующему индексу вернет undefined (в логическом контексте false)

метод Object.keys() — получения массива ключей объекта.

Spread-оператор позволяет разложить объект на список пар «ключ:значение». 

const user = { name: 'Vasya', married: true, age: 25 };
const newUser = { ...user };
console.log(newUser); // => { name: 'Vasya', married: true, age: 25 }
const newUser = { ...user, married: true, age: 25 };
console.log(newUser); // => { name: 'Vasya', married: true, age: 25 }

Если у объектов есть одинаковые ключи, то при слиянии в итоговый объект будет записано значение ключа того объекта, который был расположен правее:

const user = { name: 'Vasya', married: true, age: 25 };
const user2 = { name: 'Petya', surname: 'Ivanov' };
const mergedObject = { ...user, ...user2 };
console.log(mergedObject); // => { name: 'Petya', married: true, age: 25, surname: 'Ivanov' }

цикл for…in применим для обхода по ключам объекта

метод Object.entries(obj) — возвращает сразу ключи и значения объекта


const course = { name: 'JS: React', slug: 'js-react' };
const entries = Object.entries(course);
// [[ 'name', 'JS: React' ], [ 'slug', 'js-react' ]]
for (const [key, value] of entries) {
  console.log(key);
  console.log(value);
}

Базовый синтаксис деструктурирующего присваивания для объектов таков:

ключевое слово { что записывать: куда записывать }

const options = { enabled: true, compression: { algo: 'gzip' } };
const { enabled, compression: { algo: compressionAlgo } } = options; //деструктор

Ассоциативный массив — абстрактный тип данных, с помощью которого хранятся пары ключ-значение. У него есть и другие названия: «словарь», «мап» (от слова map). В разных языках ему соответствуют разные типы данных. В JavaScript — это Object, в других языках:

  • Ruby — Hash
  • Lua — Table
  • Python — Dictionary
  • Elixir/Java — Map

Любая операция внутри хеш-таблицы начинается с того, что ключ каким-то образом преобразуется в индекс обычного массива. Для получения индекса из ключа, нужно выполнить два действия: найти хеш (хешировать ключ) и привести его к индексу (например через остаток от деления).

Хеширование — операция, которая преобразует любые входные данные в строку (реже число) фиксированной длины. Функция, реализующая алгоритм преобразования, называется «хеш-функцией», а результат называют «хешем» или «хеш-суммой». Наиболее известны CRC32, MD5 и SHA (много разновидностей).

You may also like...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *