如何在JavaScript中将带数字键的多对象结构转换为对象数组?
JavaScript将指定对象转为目标数组的方法
原始对象结构:
{ "0": { "category": "Private", "price": "5" }, "1": { "category": "VIP", "price": "5" }, "2": { "category": "Premium", "price": "5" } }
期望得到的数组:
const pricing = [ { category: "Private", price: 5 }, { category: "VIP", price: 5 }, { category: "Premium", price: 5 }, ]
方法一:使用Object.values() + map(推荐)
这是ES6+最简洁的实现方式,先提取对象的所有值组成数组,再遍历转换price的类型:
const originalObj = { /* 你的原始对象 */ }; const pricing = Object.values(originalObj).map(item => ({ ...item, price: Number(item.price) }));
Object.values(originalObj)会按键的顺序提取所有值,生成初始数组map遍历每个元素,展开原对象的属性,同时将price从字符串转为数字
方法二:兼容旧环境的Object.keys() + map
如果需要兼容不支持Object.values()的旧环境,可以先获取所有键,再逐个取值转换:
const originalObj = { /* 你的原始对象 */ }; const pricing = Object.keys(originalObj).map(key => ({ ...originalObj[key], price: Number(originalObj[key].price) }));
方法三:使用Array.from()
Array.from()也可以实现,结合对象值的数组和映射函数:
const originalObj = { /* 你的原始对象 */ }; const pricing = Array.from(Object.values(originalObj), item => ({ ...item, price: Number(item.price) }));
内容的提问来源于stack exchange,提问作者Khalid
相关产品推荐
相关产品推荐

