在JSON嵌套对象上迭代以创建新对象



我有以下数据:

export interface BreakTimes {
start? : string;
end?   : string;
}
export interface WorkingPlanDays {
start? : string;
end?   : string;
breaks? : BreakTimes[];
}
export interface WorkingPlan {
[day : string]  : WorkingPlanDays;
}
const WORKING_PLAN_DATA: WorkingPlan = {
"monday": null,
"tuesday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"wednesday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"thursday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"friday": {
"start": "09:00",
"end": "20:00",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "14:30"
}
]
},
"saturday": {
"start": "09:00",
"end": "17:00",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"sunday": null
}

我试图实现的是在一个新的对象中获得休息时间,比如:

const ELEMENT_DATA: Breaks[] = [
{day: 'Tuesday', start: '12:00', end: '12:30'},
{day: 'Tuesday', start: '13:30', end: '13:50'},
{day: 'Wednesday', start: '12:00', end: '12:30'},
{day: 'Wednesday', start: '13:30', end: '13:50'},
...... etc....
];

最好的方法是什么?我对javascript和typescript还很陌生,对如何迭代这个包含嵌套对象的对象有点困惑。

如果你有答案,你能解释一下你的代码是如何工作的,让我更好地理解吗?非常感谢各位!

也许像这样的片段对您的入门很有用。祝你好运

(编辑以添加接近OP所需输出的版本。(

请参阅以获取环路内和阵列。对于每个

const WorkingPlan = {
"monday": null,
"tuesday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"wednesday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"thursday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"friday": {
"start": "09:00",
"end": "20:00",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "14:30"
}
]
},
"saturday": {
"start": "09:00",
"end": "17:00",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"sunday": null
}
let day, breaks = new Array();
for ( day in WorkingPlan ) {
if ( WorkingPlan[day] && "breaks" in WorkingPlan[day] ) {
breaks.push( {day: day, breaks: WorkingPlan[day].breaks});
}
}

console.log(breaks);

breaks =[];

for ( day in WorkingPlan ) {
if ( WorkingPlan[day] && "breaks" in WorkingPlan[day] ) {
WorkingPlan[day].breaks.forEach( v => {
breaks.push( {day: day, start: v.start, end: v.end});
});
}
}

console.log(breaks);

const iterate = (obj) => {
const result = []
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object' && obj[key] !== null && obj[key].breaks) {
obj[key].breaks.forEach(time=>{
result.push({day:key, start: time.start,end:time.end})
})

}
})
return result
}
const response = iterate({
"monday": null,
"tuesday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"wednesday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"thursday": {
"start": "09:00",
"end": "17:30",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"friday": {
"start": "09:00",
"end": "20:00",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "14:30"
}
]
},
"saturday": {
"start": "09:00",
"end": "17:00",
"breaks": [
{
"start": "12:00",
"end": "12:30"
},
{
"start": "13:30",
"end": "13:50"
}
]
},
"sunday": null
})

console.log(response)

你可以试试这个解决方案

最新更新