[英]How to create a new array of objects from an array of values in an array of objects. TypeScript?
I have an array of dates in an array of objects like below.我在下面的对象数组中有一组日期。 I wish to create a new array of objects base of each individual date.我希望为每个单独的日期创建一个新的对象数组。 Spliting th dates and duplicate the rest of values into each date.拆分日期并将值的 rest 复制到每个日期中。
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'
},
]
},
]
*EDIT: *编辑:
(There was a poor internet connection and somehow this question was submitted before I managed to complete it) (互联网连接不佳,不知何故在我完成之前提交了这个问题)
But here is the end result I'm looking for:但这是我正在寻找的最终结果:
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'
}
}
];
You can do something like:您可以执行以下操作:
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);
The resultArray
will be (last item of array is expanded so you can check it): resultArray
将是(数组的最后一项已展开,因此您可以检查它):
EDIT编辑
You can achieve the same result with:您可以通过以下方式获得相同的结果:
const resultArray = newArray.flat(1);
console.log(resultArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.