Use Object.fromEntries para converter uma matriz em um objeto
O método Object.fromEntries() converte uma lista de pares chave-valor em um objeto.
gramática:
-
Object.fromEntries( iterável )
iterable
: Semelhante a Array, Map ou outros objetos iteráveis que implementam o protocolo iterável.
retornar um novo objeto
let keyArray = [
['name','Yimning'],
['age','18']
]
console.log(Object.fromEntries(keyArray))
// {name:'Yimning',age:'18'}
- Object.entries()
Object.entries(obj)
O método retorna uma matriz de pares chave-valor das propriedades enumeráveis do próprio objeto fornecido, na mesma ordem que seria for...in
retornada ao percorrer o objeto (com a diferença de que for-in
o loop também enumera propriedades na cadeia de protótipo).
let keyObj = {
name:'Yimning',
age:'18'
}
console.log(Object.entries(keyObj))
// [['name','Yimning'],['age','18']]
Entre eles, Object.entries() e Object.fromEntries() são operações recíprocas
Use Object.fromEntries para converter o mapa em um objeto
object.fromEntries() também pode converter os dados do tipo Map em um objeto
let map = new Map([['name','Yimning'],['age','18']])
console.log(map)
// {"name" => "Yimning", "age" => "18"}
console.log(Object.fromEntries(map))
// {name:'Yimning',age:'18'}
Uso misto de Object.entries e Object.fromEntries - conversão de objeto para objeto
let age = {p1:18,p2:19,p3:20}
const result = Object.fromEntries(Object.entries(age).filter(([key,value])=> value > 19))
console.log(result)
// {p3: 20}
Se não fizer Object.fromEntries converter o array em um objeto, como isso deve ser feito?
let arr = [
['name','Yimning'],
['age',18]
]
function toObject(arr){
return Array.from(arr).reduce(
(acc,[key,value]) => Object.assign(acc,{[key]:value}), {}
)
}