我在一个对象数组中有一个日期数组,如下所示。我希望为每个单独的日期创建一个新的对象数组。拆分日期并将其余值复制到每个日期中。
const obj = [
{
name: 'John',
email: 'john@email.com',
dateTime: [
{
date: '26-10-1988',
start: '10:00',
end: '10:30'
},
{
date: '27-10-1988',
start: '10:00',
end: '10:30'
},
{
date: '29-10-1988',
start: '10:00',
end: '10:30'
},
]
},
{
name: 'Mary',
email: 'mary@email.com',
dateTime: [
{
date: '26-10-1988',
start: '10:00',
end: '10:30'
},
]
},
]
*编辑:
(互联网连接很差,不知何故在我设法完成之前提交了这个问题)
但这是我正在寻找的最终结果:
const newObj = [
{
name: 'John',
email: 'john@email.com',
dateTime: {
date: '26-10-1988',
start: '10:00',
end: '10:30'
}
},
{
name: 'John',
email: 'john@email.com',
dateTime: {
date: '27-10-1988',
start: '10:00',
end: '10:30'
},
},
{
name: 'John',
email: 'john@email.com',
dateTime: {
date: '29-10-1988',
start: '10:00',
end: '10:30'
},
},
{
name: 'Mary',
email: 'mary@email.com',
dateTime: {
date: '26-10-1988',
start: '10:00',
end: '10:30'
}
}
];
答案 0 :(得分:1)
您可以执行以下操作:
const newArray = obj.map(i => {
return i.dateTime.map(dateObj => {
return {
name: i.name,
email: i.email,
dateTime: dateObj
};
});
});
const resultArray = [].concat.apply([], newArray);
console.log(resultArray);
resultArray
将是(数组的最后一项被展开以便您可以检查它):
编辑
您可以通过以下方式获得相同的结果:
const resultArray = newArray.flat(1);
console.log(resultArray);