如何将含两个对象数组的对象转换为仅存单一属性的数组结构?
如何将嵌套对象数组转换为精简的键值对数组?
问题场景
你有如下原始输入对象:
const originalData = { Belleza: [ { category: "Belleza", text: "Alimentacion Saludable" }, { category: "Belleza", text: "Rutinas" }, { category: "Belleza", text: "Cuidado Facial" } ], Viajes: [ { category: "Viajes", text: "Trabajo remoto" }, { category: "Viajes", text: "Viajar con poco dinero" } ] };
需要将其转换为只保留text字段数组的结构:
{ Belleza: ["Alimentacion Saludable", "Rutinas", "Cuidado Facial"], Viajes: ["Trabajo remoto", "Viajar con poco dinero"] }
解决方案
方法一:使用reduce实现
这是你尝试过的方法,正确实现需要结合Object.entries遍历原始对象的键值对,再对每个数组提取text字段:
const transformedData = Object.entries(originalData).reduce((acc, [key, arr]) => { // 提取当前数组中每个元素的text字段,赋值给对应键 acc[key] = arr.map(item => item.text); // 返回累加器供下一次迭代使用 return acc; }, {}); // 初始累加器为空对象
方法二:使用Object.fromEntries(更简洁)
如果你的运行环境支持ES2019及以上版本,可以用更简洁的写法:
const transformedData = Object.fromEntries( Object.entries(originalData).map(([key, arr]) => { // 将每个键值对中的数组替换为text字段数组 return [key, arr.map(item => item.text)]; }) );
内容的提问来源于stack exchange,提问作者Diego Dorado
相关产品推荐
相关产品推荐

