Cómo convertir una matriz en un objeto en JavaScript

Hay cuatro formas de convertir una matriz en un objeto en JavaScript:

  1. Uso del Object.assign() método para convertir una matriz en un objeto, p. const obj = Object.assign({}, arr) .
  2. Usando la sintaxis extendida (... ) para convertir una matriz en un objeto, p. const obj = {...arr} .
  3. Uso del Array.forEach() método para iterar sobre todos los elementos y agregarlos como un par clave-valor a un objeto.
  4. Uso del Object.fromEntries() método para convertir una matriz de pares clave-valor en un objeto, p. const obj = Object.fromEntries(arr) .

Object.assign() Método

El Object.assign() El método se introdujo en ES6 y copia los valores de todas las propiedades enumerables propias de uno o más objetos de origen a un objeto de destino. Tiene la siguiente sintaxis:

Object.assign(target, ...sources)

El target object es el primer argumento y también se utiliza como valor de retorno. El siguiente ejemplo demuestra cómo puede usar el Object.assign() método para convertir una matriz en un objeto:

const names = ['Alex', 'Bob', 'Johny', 'Atta']

const obj = Object.assign({}, names)

console.log(obj)
// { '0': 'Alex', '1': 'Bob', '2': 'Johny', '3': 'Atta' }

Lea esta guía para obtener más información sobre el Object.assign() método.

Operador de propagación

Otra forma de convertir una matriz en un objeto es mediante el uso de la extensión de objetos ({... iterable} ) operador. Aquí hay un ejemplo:

const names = ['Alex', 'Bob', 'Johny', 'Atta']

const obj = { ...names }

console.log(obj)
// { '0': 'Alex', '1': 'Bob', '2': 'Johny', '3': 'Atta' }

Array.forEach() Método

Para usar Array.forEach() método para convertir una matriz en un objeto:

  1. Declarar un objeto vacío como variable.
  2. Utilice el Array.forEach() para iterar sobre los elementos de la matriz.
  3. En cada iteración, agregue el elemento como un par clave-valor al objeto.
const names = ['Alex', 'Bob', 'Johny', 'Atta']

const obj = {}

names.forEach((elem, i) => {
  obj[i] = elem
})

console.log(obj)
// { 0: "Alex", 1: "Bob", 2: "Johny", 3: "Atta" }

A diferencia de los métodos anteriores, el Array.forEach() El método le permite nombrar las claves del nuevo objeto.

names.forEach((elem, i) => {
  obj[`key${i}`] = elem
})

console.log(obj)
// { key0: 'Alex', key1: 'Bob', key2: 'Johny', key3: 'Atta' }

También puede agregar una función a Array 's prototipo y llámelo cada vez que desee convertir una matriz en un objeto:

Array.prototype.toObject = function () {
  const obj = {}

  this.forEach((elem, i) => {
    obj[i] = elem
  })

  return obj
}

const newObj = ['Alex', 'Bob', 'Johny', 'Atta'].toObject()

console.log(newObj)
// { '0': 'Alex', '1': 'Bob', '2': 'Johny', '3': 'Atta' }

Object.fromEntries() Método

El Object.fromEntries() El método convierte una matriz de pares clave-valor en un objeto y devuelve el resultado, como se muestra a continuación:

const props = [
  ['name', 'John Doe'],
  ['age', 29]
]

const obj = Object.fromEntries(props)

console.log(obj)
// { name: 'John Doe', age: 29 }

Observe las matrices anidadas que usamos esta vez. Estas matrices bidimensionales contienen al menos dos elementos:una clave y un valor.