如何遍历JS对象数组生成指定结构的嵌套键值对对象?
实现方案
你之前用数组push方法得到的结果不符合预期,是因为目标结构是对象类型,而非数组,直接操作对象属性即可实现需求。
基础循环实现(兼容性好、可读性高)
const scores = [ {score: 500}, {variant_id: 600} ]; // 初始化结果结构 const res = { nums: {} }; for (const item of scores) { // 提取当前对象的第一个属性值作为键 const key = Object.values(item)[0]; res.nums[key] = 0; } console.log(res); // 输出:{nums: {500: 0, 600: 0}}
reduce精简实现
const scores = [ {score: 500}, {variant_id: 600} ]; const res = { nums: scores.reduce((prev, curr) => { prev[Object.values(curr)[0]] = 0; return prev; }, {}) };
注意
如果数组内的对象属性名是固定的,你也可以直接指定属性名取值,比如item.score、item.variant_id,不需要用Object.values做兼容处理。
内容的提问来源于stack exchange,提问作者Zeusox
相关产品推荐
相关产品推荐

