如何用Lodash将带索引后缀的对象转换为分组对象数组
用Lodash重组带索引后缀的对象为结构化数组
给定带索引后缀的原始对象:
const object = { 'id-0': 12, 'id-1': 19, 'volume-0': 13, 'volume-1': 10, 'price-0': 9, 'price-1': 19 }
需要将其转换为按索引分组的结构化对象数组:
const newArray = [ { id:12, volume: 13, price: 9 }, { id:19, volume: 10, price: 19 } ]
实现方案
使用Lodash的_.transform方法可以高效完成这个转换,它允许我们遍历对象时累积生成目标结构:
const _ = require('lodash'); const object = { 'id-0': 12, 'id-1': 19, 'volume-0': 13, 'volume-1': 10, 'price-0': 9, 'price-1': 19 }; const newArray = _.transform(object, (result, value, key) => { // 拆分键名,分离属性名与索引 const [propName, index] = key.split('-'); // 初始化对应索引的空对象(如果不存在) result[index] = result[index] || {}; // 为对应索引的对象赋值属性 result[index][propName] = value; }, []);
代码说明
_.transform以原始对象为遍历源,空数组作为结果初始值- 对每个键名执行
split('-'),拆分出属性名(如id、volume)和索引(如0、1) - 检查结果数组对应索引位置是否已有对象,无则创建空对象
- 将当前键值对映射到对应索引的对象中,最终得到目标数组结构
内容的提问来源于stack exchange,提问作者Amirhossein Hajilari
相关产品推荐
相关产品推荐

