Code Example 1: for...in vs Object.entries()
❓ Чем отличаются два подхода к перебору свойств объекта? Какой предпочтительнее и почему?
Подход A:
const user = { name: 'Иван', age: 30, city: 'Москва' };
for (const key in user) {
if (user.hasOwnProperty(key)) {
console.log(key, user[key]);
}
}
Подход B:
const user = { name: 'Иван', age: 30, city: 'Москва' };
for (const [key, value] of Object.entries(user)) {
console.log(key, value);
}
Code Example 2: Object.keys(), Object.values(), Object.entries()
❓ Что вернёт каждый из трёх вызовов — Object.keys(), Object.values() и Object.entries()?
const user = { name: 'Анна', age: 25, role: 'admin' };
console.log(Object.keys(user));
console.log(Object.values(user));
console.log(Object.entries(user));
Code Example 3: Object.fromEntries()
❓ Что будет в переменной user? Какую обратную операцию выполняет Object.fromEntries()?
const entries = [['name', 'Борис'], ['age', 30]];
const user = Object.fromEntries(entries);
console.log(user);
Code Example 4: Фильтрация свойств объекта
❓ Что будет в переменной affordable? Как работает комбинация entries + filter + fromEntries?
const prices = { apple: 100, banana: 50, orange: 75, grape: 200 };
const affordable = Object.fromEntries(
Object.entries(prices).filter(([_, price]) => price < 100)
);
console.log(affordable);
Code Example 5: Трансформация значений
❓ Что будет в переменной newPrices? Что делает этот код?
const prices = { apple: 100, banana: 50, orange: 75 };
const newPrices = Object.fromEntries(
Object.entries(prices).map(([key, value]) => [key, value * 1.1])
);
console.log(newPrices);
Code Example 6: Поиск максимального значения
❓ Что выведет console.log? Как reduce используется для поиска максимума?
const scores = { Анна: 95, Борис: 87, Виктор: 92 };
const [topStudent, topScore] = Object.entries(scores)
.reduce((max, current) => current[1] > max[1] ? current : max);
console.log(`Лучший: ${topStudent} (${topScore} баллов)`);
Code Example 7: for...of с keys(), values(), entries()
❓ Что выведет каждый из трёх вариантов цикла for...of?
keys():
const user = { name: 'Иван', age: 30 };
for (const key of Object.keys(user)) {
console.log(key);
}
values():
const user = { name: 'Иван', age: 30 };
for (const value of Object.values(user)) {
console.log(value);
}
entries():
const user = { name: 'Иван', age: 30 };
for (const [key, value] of Object.entries(user)) {
console.log(`${key}: ${value}`);
}
Code Example 8: Map ↔ Object
❓ Как работает преобразование между Map и Object? Что выведут console.log?
const map = new Map([
['name', 'Алексей'],
['age', 28]
]);
const obj = Object.fromEntries(map);
console.log(obj);
const newMap = new Map(Object.entries(obj));
console.log(newMap.get('name'));
Code Example 9: Порядок ключей
❓ Что вернёт Object.keys(mixed)? В каком порядке будут ключи и почему?
const mixed = { b: 1, 2: 'two', a: 3, 1: 'one' };
console.log(Object.keys(mixed));
Code Example 10: Enumerable свойства
❓ Что вернёт Object.keys(obj)? Почему не все свойства включены?
const obj = {};
Object.defineProperty(obj, 'hidden', {
value: 'secret',
enumerable: false
});
obj.visible = 'shown';
console.log(Object.keys(obj));
Code Example 11: Symbol-ключи
❓ Что вернут Object.keys() и Object.values()? Почему Symbol-ключ не включён?
const sym = Symbol('id');
const obj = {
[sym]: 123,
name: 'Тест'
};
console.log(Object.keys(obj));
console.log(Object.values(obj));