如何从给定JavaScript对象生成关联数组?
把JavaScript对象转成你要的数组结构?先理清楚细节哈
首先得提一句:你给出的目标结构[ 1:{taxCalculation: 39.95, taxId: "3"}, 2:{taxCalculation: 10, taxId: "3"}, 5:{taxCalculation: 0.48, taxId: "2"} ]其实不是合法的JavaScript数组——数组元素只能是单纯的值,不能用键:值这种对象的语法。不过我猜你是想把原对象里的每个键值对都保留在数组里,给你几种符合JS规范的实现方式:
方式1:转成包含单个键值对的对象数组
如果想把原对象的每个键和对应的值,分别包装成一个小对象放进数组,用Object.entries()搭配map就能搞定:
// 你的原始对象 const originalObj = { 1:{taxCalculation: 39.95, taxId: "3"}, 2:{taxCalculation: 10, taxId: "3"}, 5:{taxCalculation: 0.48, taxId: "2"} }; // 转换逻辑 const resultArray = Object.entries(originalObj).map(([key, value]) => ({ [key]: value })); console.log(resultArray); // 输出结果: // [ // { '1': { taxCalculation: 39.95, taxId: '3' } }, // { '2': { taxCalculation: 10, taxId: '3' } }, // { '5': { taxCalculation: 0.48, taxId: '2' } } // ]
方式2:生成和原对象键对应索引的稀疏数组
要是你希望数组的索引直接对应原对象的键(比如索引1对应原对象的键1),可以用Object.assign()直接转:
const originalObj = { 1:{taxCalculation: 39.95, taxId: "3"}, 2:{taxCalculation: 10, taxId: "3"}, 5:{taxCalculation: 0.48, taxId: "2"} }; const resultArray = Object.assign([], originalObj); console.log(resultArray); // 输出结果: // [ <1 empty item>, // { taxCalculation: 39.95, taxId: '3' }, // { taxCalculation: 10, taxId: '3' }, // <2 empty items>, // { taxCalculation: 0.48, taxId: '2' } // ]
这种方式会生成稀疏数组,索引0、3、4的位置是空的,只有和原对象键匹配的索引有值,刚好对应你想要的“键对应位置”的需求。
方式3:直接提取原对象的值组成数组
如果只是想要原对象里的那些taxCalculation和taxId对象组成的数组,用Object.values()最简单:
const originalObj = { 1:{taxCalculation: 39.95, taxId: "3"}, 2:{taxCalculation: 10, taxId: "3"}, 5:{taxCalculation: 0.48, taxId: "2"} }; const resultArray = Object.values(originalObj); console.log(resultArray); // 输出结果: // [ // { taxCalculation: 39.95, taxId: '3' }, // { taxCalculation: 10, taxId: '3' }, // { taxCalculation: 0.48, taxId: '2' } // ]
小提醒
你写的目标结构在JS里会报错哦,上面这几种都是合法且贴近你需求的实现,选哪种就看你实际要用来做什么啦~
内容的提问来源于stack exchange,提问作者rafat ahmed
相关产品推荐
相关产品推荐

