如何用JavaScript的reduce方法将对象数组转换为指定结构的单个对象?
如何将对象数组转换为指定的描述结构?
你的输入数组:
const array = [{name: 'chips', size: 'medium'}, {name: 'burguer', size: 'large'}];
期望输出:
{description: 'chips medium, burguer large'}
用reduce实现的正确写法
你之前用reduce没成功,大概率是初始值设置不对或者累加逻辑有问题,试试这个:
const result = array.reduce((acc, current) => { const part = `${current.name} ${current.size}`; acc.description = acc.description ? `${acc.description}, ${part}` : part; return acc; }, { description: '' });
逻辑说明:
- 给reduce传的初始值是一个带有空
description属性的对象,确保累加器acc从一开始就是我们要的对象结构 - 遍历每个元素时,先把
name和size拼接成单个字符串片段 - 判断累加器里的
description是否为空:为空就直接赋值当前片段,不为空就用逗号加空格连接已有内容和当前片段 - 每次遍历完返回累加器,最终就能得到目标结构
更简洁的替代方案
如果不局限于必须用reduce,用map加join会更直观:
const descriptionStr = array.map(item => `${item.name} ${item.size}`).join(', '); const result = { description: descriptionStr };
先通过map把每个对象转成name+size的字符串,再用join把数组转成逗号分隔的整体字符串,最后放到目标对象里即可。
内容的提问来源于stack exchange,提问作者juanserna8
相关产品推荐
相关产品推荐

