javascript - 将对象数组数组简化为对象数组

标签 javascript reduce arrayofarrays

var data=[
  {name:'Sam',ssn:123, age:25, hobbies:[{name:'cricket'},{name:'football'}]},
  {name:'John',ssn:234, age:25, hobbies:[{name:'cricket'},{name:'football'}]},
  {name:'Mathew',ssn:345, age:25, hobbies:[{name:'cricket'},{name:'football'}]}
];

想要将其生成为以下格式

[      
      {name:'Sam',ssn:123, age:25,hobbies:[{name:'cricket'}]},
      {name:'Sam',ssn:123, age:25,hobbies:[{name:'football'}]},
      {name:'John',ssn:234, age:25,hobbies:[{name:'cricket'}]},
      {name:'John',ssn:234, age:25,hobbies:[{name:'football'}]},
      {name:'Mathew',ssn:345, age:25,hobbies:[{name:'cricket'}]},
      {name:'Mathew',ssn:345, age:25,hobbies:[{name:'football'}]}
];

我尝试过以下方法。没有任何想法。我已经添加了一些reduce方法的基本功能,但接下来没有任何想法来压平它。

var flatten = data.reduce((curr, next) => {
  var temp = [];
  return (curr.hobbies = { name: "cricket" });
  temp.push(curr);
  return curr;
});

最佳答案

flatMap() 是这里的最佳选择。

var data=[
  {name:'Sam',ssn:123, age:25, hobbies:[{name:'cricket'},{name:'football'}]},
  {name:'John',ssn:234, age:25, hobbies:[{name:'cricket'},{name:'football'}]},
  {name:'Mathew',ssn:345, age:25, hobbies:[{name:'cricket'},{name:'football'}]}
];

const res = data.flatMap(x => x.hobbies.map(h => ({...x, hobbies: [h]})));
console.log(res)

关于javascript - 将对象数组数组简化为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60606797/

相关文章:

javascript - 访问控制允许来源错误

javascript - 如何仅在省略号时激活工具提示?

javascript - 如何使用 javascript 访问 View 状态?

arrays - MATLAB:遍历多个 double 组以查找最小/最大值

javascript - Google Apps 脚本可以编辑另一个脚本吗?

javascript - 在reduce函数javascript中找到最大值和最小值

c - 具有相同类型字段的结构上的 MPI_Allreduce 是否可移植?

Javascript 将平面数据转换为嵌套对象

sum - Julia "strange"使用 fill() 和 .+= 的行为