如何解决将对象数组的日期值与字符串数组中的日期进行比较
我有以下用例,而且我已经堆积了好几天。
var rows = ["23-01-2021","24-01-2021","25-01-2021","26-01-2021","27-01-2021","28-01-2021"]
我还有一个数据结构,其中包含每个员工的工作日
var schedule = [{
id: 1,name: "Chandler Bing",times: [
{
start: "9.00",end: "17.00",date: "25-01-2021"
},{
start: "9.00",date: "26-01-2021"
},date: "28-01-2021"
},]
},{
id: 2,name: "Employee 2",date: "23-01-2021"
},date: "27-01-2021"
},date: "28-01-2021"
}
]
}
]
我想比较每个员工的日期数组和时间数组。如果时间数组中缺少日期,则创建一个具有空值的对象...实际上我想最终得到如下数据结构。
var schedule = [{
id: 1,name: "Employee 1",times: [{
start: "",end: "",date: ""
},{
start: "",{
start: "9.00",date: "25-01-2021"
},date: "26-01-2021"
},date: "28-01-2020"
}
]
},{
id: 2,times: [
{
start: "",date: "27-01-2021"
},date: "28-01-2021"
},]
}
]]
到目前为止我已经实现了这个逻辑,但显然不起作用
var rows = ["23-01-2021","28-01-2021"]
var schedule = [{
id: 1,times: [{
start: "9.00",]
}]
var arr = []
var test = {};
rows.forEach(function(row,index) {
schedule.forEach(function(entry) {
entry.times.forEach(function(times,index) {
console.log(row)
if (times.date === row) {
test = {
start: times.start,end: times.end,date: times.date
}
arr.push(test)
} else {
test = {
start: "",date: ""
}
arr.push(test);
}
})
})
})
console.log(arr);
感谢每一个帮助...
解决方法
您可以映射行并查看 times
并在日期具有相同值时采用此对象。
这种方法的特点是对索引进行闭包,需要 schedule
的 times
数组的排序数据。
const
rows = ["23-01-2021","24-01-2021","25-01-2021","26-01-2021","27-01-2021","28-01-2021"],schedule = [{ id: 1,name: "Chandler Bing",times: [{ start: "9.00",end: "17.00",date: "25-01-2021" },{ start: "9.00",date: "26-01-2021" },date: "28-01-2021" }] },{ id: 2,name: "Employee 2",date: "23-01-2021" },date: "27-01-2021" },date: "28-01-2021" }] }],result = schedule.map(o => ({ ...o,times: rows.map((i => date => o.times[i]?.date === date
? o.times[i++]
: { start: "",end: "",date: "" }
)(0)) }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。