You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript对象转换为包含单个键值对对象的数组?

解决方法:将对象转换为单个键值对对象组成的数组

嘿,这个转换真的超简单,给你两种常用的实现方式,都能快速得到你想要的days2数组:

方法1:使用Object.entries() + map()

这是ES6及以上版本最简洁的写法,Object.entries()会直接把对象拆成[键, 值]格式的二维数组,再通过map()把每个子数组转换成单个键值对的对象:

var days = { 0: 10, 1: 40, 2: 20, 3: 15, 4: 5, 5: 18, 6: 9 };
var days2 = Object.entries(days).map(([key, value]) => ({ [key]: value }));

// 输出结果就是你要的:[ {0:10}, {1: 40}, {2: 20}, {3: 15}, {4: 5}, {5: 18}, {6: 9} ]
console.log(days2);

这里用到了解构赋值([key, value])直接从子数组里取出键和值,再用计算属性名[key]来创建新对象的属性,一步到位。

方法2:兼容旧环境的Object.keys() + map()

如果你的运行环境不支持ES6的Object.entries(),可以用Object.keys()先获取对象所有的键,再遍历生成目标数组:

var days = { 0: 10, 1: 40, 2: 20, 3: 15, 4: 5, 5: 18, 6: 9 };
var days2 = Object.keys(days).map(key => ({ [key]: days[key] }));

console.log(days2);

Object.keys(days)会返回对象所有键组成的数组["0", "1", "2", ..., "6"],然后每个键对应原对象的值,生成单个键值对的对象即可。

小提示

虽然原对象的键是数字,但JavaScript对象的属性名本质上都是字符串,不过这不影响你用数字去访问新数组里的对象属性(比如days2[0][0]和days2[0]["0"]都能拿到10),完全符合你的需求。

内容的提问来源于stack exchange,提问作者Albert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:55:13