如何将单个JavaScript对象转换为对象数组?
解决方案
这有个非常简洁的函数式实现方式,利用JavaScript原生的Object.entries()和map()方法就能轻松完成转换:
const answers = {1: 'first', 2:'second', 3:'third', 4:'fourth'}; const arrayOfAnswers = Object.entries(answers).map(([key, value]) => ({ [key]: value }));
步骤解释:
Object.entries(answers):把原对象转换成由键值对组成的二维数组,输出结果是:[["1", "first"], ["2", "second"], ["3", "third"], ["4", "fourth"]](注:对象的数字键会被自动转为字符串,但这不影响最终生成的对象结构——因为JS对象中数字类型的键本质上也会被存储为字符串)
map(([key, value]) => ({ [key]: value })):- 用解构赋值直接从每个键值对数组中取出
key和value - 通过计算属性名语法
[key],创建一个只包含当前键值对的新对象,最终把所有新对象组合成目标数组。
- 用解构赋值直接从每个键值对数组中取出
如果你希望显式让键以数字形式定义(虽然在对象中实际存储仍为字符串),可以把key转成数字后再使用:
const arrayOfAnswers = Object.entries(answers).map(([key, value]) => ({ [Number(key)]: value }));
内容的提问来源于stack exchange,提问作者MokumJ
相关产品推荐
相关产品推荐

