, чтобы сохранить свой прогресс
18 нояб. 2021 г., 18:01

Обсуждение задания "Generate an Array of All Object Keys with Object.keys()"

Не понятно почему используется "Object." Какой это обьект? Откуда взялся? И вообще в задании вернуть масив а не обьект.
Сергей, советую изучить Типы данных JavaScript и структуры данных.
Массив (Array) - это не самостоятельный примитивный тип, а производный от Object.
Array instanceof Object === true; typeof [] === 'object';
При этом Object и Array - это уже существующие объекты и они имеют самостоятельные методы (так же, как и объект Math имеет свои методы типа max, floor, random и т.п., часть из которых вы наверняка уже встречали ранее, например в этом и этом уроках).

А привычное нам объявление переменных чаще всего является просто синтаксическим сахаром, например:
const obj = {} const obj2 = new Object(); const arr = []; const arr2 = new Array();
И вот методы этих объектов (Array, Object, Number, Math и т.п.) могут быть использованы просто как самостоятельные функции для определенных задач.
К примеру метод Array.isArray(variables) позволяет проверить является ли переменная массивом (typeof нам в этом не поможет, потому что typeof {} === "object" и typeof [] === "object").
А вот метод Object.freeze() вы наверняка недавно встречали в этом уроке: Предотвращение мутации объектов. При этом, как я там писал в замечании, это работает не только с объектами, но и с массивами (что и есть тоже суть объекты).

Так вот, метод Object.keys() - это специальный метод, чтобы взять все ключи объекта и вернуть их в новом массиве. Напомню: суть объекта - это Структура Ключ-Значение. К примеру:
const obj = { key1: 'val1', key2: 'val2', key3: 'val3', }
Мы видим здесь у объекта три ключа (имена свойств) и по ним три значения. Вот в результате Object.keys(obj) мы получим массив со всеми этими ключами, то есть ['key1,' 'key2', 'key3'].

А есть еще Object.values(), и он работает так же, только возвращает не ключи, а значения.

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