javascript - JavasSript 将一个对象数组拆分为多个具有某个键的数组
问题描述
背景:我想制作一个检查时间冲突的时间表计划器。任何帮助是极大的赞赏。
具体问题:无法弄清楚如何将我的对象数组拆分为多个数组,并重复某些键。
我的数据集:
let myCourses = [
{
course: "ee3001",
slots: [
{
day: "monday",
time: "0900-1100",
},
{
day: "tuesday",
time: "0930-1100",
},
{
day: "wednesday",
time: "1330-1530",
},
],
},
{
course: "ee3002",
slots: [
{
day: "monday",
time: "0900-1100",
},
{
day: "thursday",
time: "0930-1130",
},
],
},
{
course: "ee3003",
slots: [
{
day: "tuesday",
time: "0930-1100",
},
{
day: "wednesday",
time: "1330-1530",
},
{
day: "thursday",
time: "0930-1130",
},
],
},
];
我想将其拆分为的数组:
let newarray = [
{
course: "ee3001",
slot: {
day: "monday",
time: "0900-1100",
},
},
{
course: "ee3001",
slot: {
day: "monday",
time: "1300-1400",
},
},
...
...
];
let newArray2 = //containing info on ee3002
let newArray3 = //containing info on ee3003
**注意:**要填充数据集,即。用户可以添加更多课程和时间。
- 这样做的原因是我可以利用数组的笛卡尔积来查找所有组合。
- 然后我可以检查给定组合中是否存在任何时间冲突。
- 有没有更好的方法来解决这个问题?
解决方案
Ciao,您可以尝试使用以下示例:
let myCourses = [
{
course: "ee3001",
slots: [
{
day: "monday",
time: "0900-1100",
},
{
day: "tuesday",
time: "0930-1100",
},
{
day: "wednesday",
time: "1330-1530",
},
],
},
{
course: "ee3002",
slots: [
{
day: "monday",
time: "0900-1100",
},
{
day: "thursday",
time: "0930-1130",
},
],
},
{
course: "ee3003",
slots: [
{
day: "tuesday",
time: "0930-1100",
},
{
day: "wednesday",
time: "1330-1530",
},
{
day: "thursday",
time: "0930-1130",
},
],
},
];
let Arrayee3001 = [];
let array1 = myCourses.filter(course => course.course === "ee3001")
array1[0].slots.forEach(slot => {
let result = {};
result.course = array1[0].course;
result.slot = [];
result.slot.push(slot);
Arrayee3001.push(result);
});
console.log(Arrayee3001);
我已经myCourses
根据course
id 过滤了数组。然后我在每个找到的插槽上创建了一个 forEach slots
,我创建了一个从数组过滤的对象,以及当前result
的. 最后,我将此对象推入名为.course
slot
result
Arrayee3001
推荐阅读
- javascript - React useEffect 不会阻止重新渲染
- html - 试图让孩子悬停与父母不同
- amazon-web-services - 如何在 AWS Cognito 中创建自定义角色并在 Spring Boot 应用程序中获取自定义角色权限
- java - 为什么在运行 JUnit 测试时带有 @MockBean 的 Mockito 会返回意外的 Pass
- oracle-data-integrator - 如何检查 ODI 存储库中标准序列的最新值
- react-native - 如何获取epubjs库中的文档总页数和当前页面数字索引?
- javascript - 如何递归地将对象键值对添加到具有子数组的对象数组中?
- java - Eclipse - 以编程方式突出显示编辑器的多行
- javascript - 为什么 Javascript 以这种方式工作?
- class - Making a Kotlin Function Accept a String as an Object Reference