如何将一个由两个对象数组组成的对象转换为一个对象的一个属性的数组

问题描述 投票:0回答:2

这是初始输入 对象 {
的 Belleza:Array(3) [ {...}, {...}, {...} ] 的 0: 对象 { category: "Belleza", text: "Alimentacion Saludable" } 的 1:对象{类别:“Belleza”,文本:“Rutinas”} 的 2:对象{类别:“Belleza”,文本:“Cuidado Facial”} 的 的 的 Viajes:数组 [{...}, {...} ] 的 0:对象{类别:“Viajes”,文本:“Trabajo remoto”} 的 1:对象{类别:“Viajes”,文本:“Viajar con poco dinero”}

}

我有上面的对象,我需要将它转换成这样的东西:

{

Belleza:["Alimentacion Saludable","Rutinas","Cuidado Facial"], Viajes:[Trabajo remoto,Viajar con poco dinero]

}

我试过减少方法但没有用,老实说我不知道如何实现它

javascript arrays object reduce
2个回答
0
投票

使用 reduce 构建对象并从对象数组中收集文本值。

const input = {};
const output = Object.keys(input).reduce((acc, key) => {
  const value = input[key];
  acc[key] = value.map(item => item.text);

  return acc;
}, {});

0
投票

您可以映射对象的条目,使用

Array#map
提取所有文本属性。

const o = {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" }]};
const res = Object.fromEntries(Object.entries(o).map(([k, v]) => [k, v.map(x => x.text)]));
console.log(res);

© www.soinside.com 2019 - 2024. All rights reserved.