如何为对象数组的项分配键?及对象转指定数组结构的最优方法
如何将键值对对象转换为指定结构的数组?
要把给定的键值对对象转换成目标结构的数组,有几种简洁高效的方法,这里推荐最常用的两种:
方法一:ES6+ 简洁写法(最优)
利用Object.entries()直接提取对象的键值对,再结合Array.map()映射成目标结构:
const originalObj = {"john":15, "alex":19, "mark":19, "luke":12}; const data = Object.entries(originalObj).map(([name, value]) => ({ name, value }));
Object.entries()会将原对象转换为[键名, 对应值]的二维数组,之后通过解构赋值直接取出每个项的键和值,再用对象字面量简写生成目标对象,代码简洁且可读性高。
方法二:ES5 兼容写法
如果需要兼容不支持ES6的环境,可以用Object.keys()获取所有键名后遍历:
const originalObj = {"john":15, "alex":19, "mark":19, "luke":12}; const data = Object.keys(originalObj).map(function(key) { return { name: key, value: originalObj[key] }; });
这种方法先提取对象的所有键名数组,再逐个取出对应的值,组装成目标结构的对象。
这两种方法的时间复杂度都是O(n)(n为对象的键值对数量),属于高效的转换方式,其中ES6写法因为直接获取键值对,逻辑更连贯,是当前的最优选择。
内容的提问来源于stack exchange,提问作者Mark Yu
相关产品推荐
相关产品推荐

