Object.fromEntries() в JavaScript
- Что делает Object.fromEntries()
- Синтаксис
- Массив пар в объект
- Связка с Object.entries()
- Map в объект
- Повторяющиеся ключи
- Что можно передавать
- Итого
Object.fromEntries() создает объект из пар [ключ, значение].
let entries = [
['name', 'Анна'],
['age', 28],
];
let user = Object.fromEntries(entries);
console.log(user); // { name: 'Анна', age: 28 }
Метод удобен, когда данные уже лежат в виде массива пар и их нужно превратить обратно в объект.
Что делает Object.fromEntries()
Object.fromEntries() выполняет обратную работу по отношению к Object.entries().
let user = {
name: 'Анна',
age: 28,
};
let entries = Object.entries(user);
console.log(entries);
// [['name', 'Анна'], ['age', 28]]
console.log(Object.fromEntries(entries));
// { name: 'Анна', age: 28 }
Object.entries() превращает объект в массив пар, а Object.fromEntries() превращает такой массив обратно в объект.
Синтаксис
Object.fromEntries(iterable);
iterable - перебираемая структура, внутри которой лежат пары [ключ, значение].
Чаще всего это массив массивов или результат работы Object.entries().
Массив пар в объект
Самый простой пример - массив, где каждый вложенный массив состоит из двух элементов.
let productEntries = [
['title', 'Книга'],
['price', 1200],
['inStock', true],
];
let product = Object.fromEntries(productEntries);
console.log(product);
// { title: 'Книга', price: 1200, inStock: true }
Первый элемент пары становится именем свойства, второй - значением.
Связка с Object.entries()
Частый сценарий: превратить объект в массив, обработать его методами массива и собрать объект обратно.
let prices = {
book: 1200,
pen: 100,
bag: 3000,
};
let expensiveItems = Object.entries(prices).filter((item) => {
return item[1] > 1000;
});
let result = Object.fromEntries(expensiveItems);
console.log(result); // { book: 1200, bag: 3000 }
Сначала Object.entries() сделал из объекта массив пар. Затем filter() оставил только товары дороже 1000. После этого Object.fromEntries() собрал новый объект.
Map в объект
Object.fromEntries() умеет работать не только с массивом пар, но и с Map.
let map = new Map([
['name', 'Анна'],
['age', 28],
]);
let user = Object.fromEntries(map);
console.log(user); // { name: 'Анна', age: 28 }
Map тоже хранит данные как пары ключ-значение, поэтому метод может собрать из него обычный объект.
Повторяющиеся ключи
Если один и тот же ключ встречается несколько раз, останется последнее значение.
let entries = [
['theme', 'light'],
['theme', 'dark'],
];
let settings = Object.fromEntries(entries);
console.log(settings); // { theme: 'dark' }
Это похоже на обычный объект: у него не может быть двух разных свойств с одним и тем же именем.
Что можно передавать
В Object.fromEntries() нужно передавать не обычный объект, а набор пар.
let user = {
name: 'Анна',
age: 28,
};
Object.fromEntries(user); // TypeError
Если нужно преобразовать объект, сначала получите пары через Object.entries().
let entries = Object.entries(user);
let copy = Object.fromEntries(entries);
console.log(copy); // { name: 'Анна', age: 28 }
Здесь Object.entries() подготовил данные в нужном формате.
Итого
Object.fromEntries()создает объект из пар[ключ, значение].- Метод часто используют вместе с
Object.entries(). - Сначала объект можно превратить в массив, обработать его и собрать обратно.
Object.fromEntries()также работает сMap.- Если ключи повторяются, в объект попадет последнее значение.