Массивы в JavaScript — это специальные объекты, поэтому методы [Object.keys], [Object.values], [Object.entries] работают и с ними:
const arr = ['a', 'b', 'c'];
Object.keys(arr); // ['0', '1', '2'] — индексы
Object.values(arr); // ['a', 'b', 'c'] — значения
Object.entries(arr); // [['0','a'], ['1','b'], ['2','c']] — парыМассивы в JavaScript — это как особенные объекты с номерными “карманами”. Методы [Object.*] работают с ними как с обычными объектами! 📦🔢
Возвращает все “имена карманов” (индексы) в виде строк:
const fruits = ['яблоко', 'банан', 'апельсин'];
console.log(Object.keys(fruits));
// ['0', '1', '2'] — индексы как строки!
// Пропущенные элементы не учитываются
const sparse = ['a', , 'c']; // "дырявый" массив
console.log(Object.keys(sparse));
// ['0', '2'] — только существующие индексыВозвращает значения всех элементов:
const fruits = ['яблоко', 'банан', 'апельсин'];
console.log(Object.values(fruits));
// ['яблоко', 'банан', 'апельсин'] — как arr.slice()
// Пропущенные элементы тоже не учитываются
const sparse = ['a', , 'c'];
console.log(Object.values(sparse));
// ['a', 'c'] — только существующие значенияВозвращает массив пар [индекс, значение]:
const fruits = ['яблоко', 'банан', 'апельсин'];
console.log(Object.entries(fruits));
// [['0', 'яблоко'], ['1', 'банан'], ['2', 'апельсин']]
// Удобно для перебора с индексами
Object.entries(fruits).forEach(([index, value]) => {
console.log(`${index}: ${value}`);
});
// 0: яблоко
// 1: банан
// 2: апельсин// ✅ Когда нужны индексы как массив
const arr = ['a', 'b', 'c'];
const indices = Object.keys(arr); // ['0', '1', '2']
// Лучше, чем делать цикл для получения индексов// ✅ Оставить только чётные индексы
const arr = ['a', 'b', 'c', 'd'];
const evenIndexed = Object.entries(arr)
.filter(([index]) => index % 2 === 0)
.map(([, value]) => value);
console.log(evenIndexed); // ['a', 'c']const arr = ['a', 'b', 'c'];
const keys = Object.keys(arr);
// ❌ Ошибка — это строки!
console.log(keys[0] + 1); // '01', а не 1!
// ✅ Правильно — преобразовать в число
console.log(+keys[0] + 1); // 1const arr = ['a', 'b', 'c'];
// ❌ Не то же самое!
Object.values(arr); // ['a', 'b', 'c']
arr.slice(); // ['a', 'b', 'c'] — то же самое, но понятнее
// Object.values полезен в основном с объектамиПонимание работы Object.* методов с массивами помогает лучше понимать, как устроены массивы в JavaScript! 💡
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪