亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavasSript 將一個對象數組拆分為具有特定鍵的多個數組

JavasSript 將一個對象數組拆分為具有特定鍵的多個數組

Cats萌萌 2022-12-29 09:44:30
上下文:我想制作一個檢查時間沖突的時間表計劃器。任何幫助是極大的贊賞。具體問題:無法弄清楚如何將我的對象數組拆分為多個重復某些鍵的數組。我的數據集: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 ee3002let newArray3 = //containing info on ee3003 **注意:**要填充數據集,即。用戶可以添加更多課程和時間。這樣做的原因是我可以利用數組的笛卡爾積來查找所有組合。然后我可以檢查給定組合中是否存在任何時間沖突。有沒有更好的方法來解決這個問題?
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

在這里,我使用 map 來遍歷您的數組,在該迭代中,我再次使用 map 來遍歷插槽。


 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",

          },

        ],

      },

    ];

    

    const newArray=[]

    myCourses.forEach(myFunction);


    function myFunction(item, index) {

      newArray[index] = [];

      item.slots.map((child) =>

        newArray[index].push({ course: item.course, slots: child })

      );

    }



查看完整回答
反對 回復 2022-12-29
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

再見,你可以嘗試使用這個例子:


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根據courseid 過濾了數組。然后我為找到的每個插槽創建了一個 forEach slots,我創建了一個從數組中過濾得到的對象result,course以及當前的slot. 最后,我將這個result對象推送到名為Arrayee3001.


查看完整回答
反對 回復 2022-12-29
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號