使用 JavaScript 将数组转换为对象

使用 JavaScript 将数组转换为对象

Convert an Array to an Object using JavaScript

使用该Object.assign()方法将数组转换为对象,例如
const obj = Object.assign({}, arr). Object.assign方法将目标和源对象作为参数,将源中的属性应用到目标并返回结果。

索引.js
const arr = ['zero', 'one', 'two']; const obj1 = Object.assign({}, arr); console.log(obj1); // 👉️ {0: 'zero', 1: 'one', 2: 'two'}

我们将以下 2 个参数传递给
Object.assign
方法:

  1. 目标对象 – 我们应用源属性的对象
  2. 源对象 – 包含我们要应用的属性的对象
该方法返回一个对象,其中键是数组索引,值是数组元素。

使用 forEach() 将数组转换为对象

将数组转换为对象:

  1. 声明一个变量并将其设置为一个空对象。
  2. 使用该forEach方法遍历数组。
  3. 在每次迭代中,将元素作为键/值对添加到对象。
索引.js
const arr = ['zero', 'one', 'two']; const obj3 = {}; arr.forEach((element, index) => { obj3['key' + index] = element; }); // 👇️️ {'key0': 'zero', 'key1': 'one', 'key2': 'two'} console.log(obj3);

我们传递给
Array.forEach
方法的函数会针对数组中的每个元素进行调用。

该方法还使我们能够访问当前迭代的索引。

这种方法有点手动,但是它允许您命名新对象的键。

使用 Spread 将数组转换为对象

使用扩展语法 (…) 将数组转换为对象,例如
const obj = {...arr}. 传播语法将数组的值解包到一个新对象中,其中数组的索引是对象的键和数组中的元素 – 对象的值。

索引.js
const arr = ['zero', 'one', 'two']; const obj2 = {...arr}; console.log(obj2); // 👉️ {0: 'zero', 1: 'one', 2: 'two'}

我们使用
扩展语法 (…)
将数组元素解包到一个对象中。

(…) 语法可用于任何可迭代对象,例如数组、字符串等。 Set

与第一种方法类似,数组的索引成为对象的键,元素成为对象的值。

使用 reduce 将数组转换为对象

要将数组转换为对象,请使用该reduce()方法遍历数组,将对象作为初始值传递给它。在每次迭代中,将新的键值对分配给累积的对象并返回结果。

索引.js
const arr = ['zero', 'one', 'two']; const obj4 = arr.reduce((accumulator, value, index) => { return {...accumulator, [key + index]: value}; }, {}); // 👇️️ {'key0': 'zero', 'key1': 'one', 'key2': 'two'} console.log(obj4);

我们传递给
Array.reduce
方法的函数会针对数组中的每个元素进行调用。

我们设置一个空对象作为accumulator变量的初始值。

在每次迭代中,我们为对象分配一个新的键值对并返回accumulator变量的值。

这种方法还允许您分配您的用例所需的任何键名。我们使用了字符串"key"+ 索引,但是您可以根据需要进行调整。

使用 Object.fromEntries 将数组转换为对象

要将键值对数组转换为对象,请将数组传递给
Object.fromEntries()方法,例如const obj = Object.fromEntries(arr).
Object.fromEntries方法将键值对数组转换为对象并返回结果。

索引.js
const arr2 = [ ['name', 'Tom'], ['age', 30], ]; const obj5 = Object.fromEntries(arr2); console.log(obj5); // 👉️ {name: 'Tom', age: 30}

请注意,这次我们有一个二维数组。嵌套数组每个包含 2 个元素 – 一个键和一个值。

Object.fromEntries方法将

一个可迭代对象(例如数组或 a
Map)作为参数,并返回一个由可迭代对象的条目构造的新对象。

结论

有多种方法可以将数组转换为对象:

  1. 使用Object.assign()Object.assign({}, ['a', 'b', 'c'])
  2. 使用传播语法 – {...['a', 'b', 'c']}.
  3. 使用reduce()方法。
  4. 使用Object.fromEntries()方法。