使用 JavaScript 将数组转换为对象
Convert an Array to an Object using JavaScript
使用该Object.assign()
方法将数组转换为对象,例如
const obj = Object.assign({}, arr)
. 该Object.assign
方法将目标和源对象作为参数,将源中的属性应用到目标并返回结果。
const arr = ['zero', 'one', 'two']; const obj1 = Object.assign({}, arr); console.log(obj1); // 👉️ {0: 'zero', 1: 'one', 2: 'two'}
我们将以下 2 个参数传递给
Object.assign
方法:
- 目标对象 – 我们应用源属性的对象
- 源对象 – 包含我们要应用的属性的对象
使用 forEach() 将数组转换为对象
将数组转换为对象:
- 声明一个变量并将其设置为一个空对象。
- 使用该
forEach
方法遍历数组。 - 在每次迭代中,将元素作为键/值对添加到对象。
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}
. 传播语法将数组的值解包到一个新对象中,其中数组的索引是对象的键和数组中的元素 – 对象的值。
const arr = ['zero', 'one', 'two']; const obj2 = {...arr}; console.log(obj2); // 👉️ {0: 'zero', 1: 'one', 2: 'two'}
我们使用
扩展语法 (…)
将数组元素解包到一个对象中。
Set
与第一种方法类似,数组的索引成为对象的键,元素成为对象的值。
使用 reduce 将数组转换为对象
要将数组转换为对象,请使用该reduce()
方法遍历数组,将对象作为初始值传递给它。在每次迭代中,将新的键值对分配给累积的对象并返回结果。
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
方法将键值对数组转换为对象并返回结果。
const arr2 = [ ['name', 'Tom'], ['age', 30], ]; const obj5 = Object.fromEntries(arr2); console.log(obj5); // 👉️ {name: 'Tom', age: 30}
请注意,这次我们有一个二维数组。嵌套数组每个包含 2 个元素 – 一个键和一个值。
Object.fromEntries方法将
一个可迭代对象(例如数组或 a Map
)作为参数,并返回一个由可迭代对象的条目构造的新对象。
结论
有多种方法可以将数组转换为对象:
- 使用
Object.assign()
–Object.assign({}, ['a', 'b', 'c'])
。 - 使用传播语法 –
{...['a', 'b', 'c']}
. - 使用
reduce()
方法。 - 使用
Object.fromEntries()
方法。