דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות

שליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות

מתוזמן נעוץ נעול הועבר תכנות
29 פוסטים 3 כותבים 278 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    השיב לdovid ב נערך לאחרונה על ידי
    #19

    @dovid אמר בשליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות:

    הקוד שלך היינו שורות 10-14 הם בדיוק הדרך בה הייתי כותב,

    קוד זה אינו מספיק בכדי לקבל את השעה הקודמת והבאה כשהוא מבקש שעה שהיא בתוך הטווח הנמצא במערך.
    לכן אני צריך עדיין את מה ש@yossiz כתב

    dovidD תגובה 1 תגובה אחרונה
    1
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      השיב לחוקר ב נערך לאחרונה על ידי
      #20

      @חוקר נכון, זה בדיוק הנקודה שבכל מקרה צריך את הבדיקה של המקרה הקלאסי שזה בין שני שעות.
      ולכן אני משבח את הדרך של @yossiz שעושה הכל במכה.
      אפשר ללמד זכות על הקוד שלנו שהוא טיפלה יעיל יותר במקרה שהשעה גדולה מהאיבר האחרון כי זה חוסך בדיקה על כל ערך, חיחי..

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      3
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        השיב לחוקר ב נערך לאחרונה על ידי
        #21

        @חוקר אמר בשליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות:

        @dovid
        עברתי כעת שוב על הקודים ואני רואה שאכן לא שמתי לב שחלק מהקוד אני הוספתי והוא לא מהמקורי ש @yossiz כתב, והסיבה שאני הוספתי אותו היא בגלל שבקוד שיוסי כתב אני מקבל את התוצאה הקרובה או השווה ללא הבחנה האם זה אכן שווה או שזה השעה הבאה הקרובה, ואני כן צריך לדעת האם זה השעה המבוקשת ישירות או השעה הבאה הקרובה.
        וכן אני רוצה לדעת האם אני נותן לו את השעה האחרונה במערך כי זה מה שהוא ביקש או כי זה התוצאה הכי קרובה למה שהוא ביקש.
        לכן הוספתי את הקוד שלי.
        אני תוהה איך לשלב אותו במשפט אחד מבוסס על מה ש @yossiz כתב

        אני לא מבין, הקוד של @yossiz עונה על הכל לפי קריאת הקוד.
        אני כעת אבל בודק בפועל.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        dovidD תגובה 1 תגובה אחרונה
        1
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          השיב לdovid ב נערך לאחרונה על ידי
          #22

          בדקתי, הקוד המקורי היה מושלם, בתיקון תיקנת בטעות את הnearestIndex === -1.
          הנה הקוד שעובד, בדיוק מה ש@yossiz כתב למעט האובייקט של הקודם והבא שהוספת בטוב טעם:

          let availableTimes = ['18:15:00',
                                '19:00:00',
                                '19:45:00',
                                '20:15:00',
                                '21:30:00'];
          
          console.log(findTimeFromRange(availableTimes, 1830));
          console.log(findTimeFromRange(availableTimes, 2130));
          console.log(findTimeFromRange(availableTimes, 2135));
          
          function findTimeFromRange (availableTimes, givenTime) {
              givenTime = parseInt(givenTime);
              if (givenTime < 1200){givenTime += 1200}
              const normalizedTimes = availableTimes.map(time => {
                  return parseInt(time.split(':').splice(0, 2).join(''));
              }).sort((a, b) => a - b);
          
              const nearestIndex = normalizedTimes.findIndex(time => time >= givenTime);
          
              if (nearestIndex === -1) return {'previous' : normalizedTimes[normalizedTimes.length - 1]};
              else if (normalizedTimes[nearestIndex] === givenTime) return {'this' : givenTime};
              else return {'next' : normalizedTimes[nearestIndex - 1], 'previous' : normalizedTimes[nearestIndex]};
          }
           
          

          הנה לצפות בתוצאות https://repl.it/@davidlevtov/StarryNimbleParticles#index.js

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          dovidD ח 2 תגובות תגובה אחרונה
          2
          • dovidD מחובר
            dovidD מחובר
            dovid ניהול
            השיב לdovid ב נערך לאחרונה על ידי
            #23

            אם כבר שינויים,
            כדאי/צריך לעשות את הנרמול והמיון של הזמנים מחוץ לפונקציה, חד פעמית ולא פר קריאה.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            2
            • ח מנותק
              ח מנותק
              חוקר
              השיב לdovid ב נערך לאחרונה על ידי
              #24

              @dovid אמר בשליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות:

              הנה הקוד שעובד, בדיוק מה ש@yossiz כתב למעט האובייקט של הקודם והבא שהוספת בטוב טעם:

              הבעיה של הקוד (שזה הסיבה שהוספתי את הקוד שלי)
              היא מה קורה במקרה כזה:

              console.log(findTimeFromRange(availableTimes, 1730));
              

              התוצאה שקיבלתי היא:
              { next: undefined, previous: 1815 }
              האמת שבעצם זה לא הכי נורא, אבל כן הייתי מעדיף לקבל רק את previous ללא ה next.

              dovidD תגובה 1 תגובה אחרונה
              0
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                השיב לחוקר ב נערך לאחרונה על ידי dovid
                #25

                @חוקר זה בהחלט לא נורא, אבל תוכל להוסיך שורה שבודקת אם זה == 0, ככה:

                if (nearestIndex === -1) return {'previous' : normalizedTimes[normalizedTimes.length - 1]};
                if (normalizedTimes[nearestIndex] === givenTime) return {'this' : givenTime};
                if (nearestIndex === 0) return {'next' : normalizedTimes[0]};
                return {'next' : normalizedTimes[nearestIndex - 1], 'previous' : normalizedTimes[nearestIndex]};
                
                

                השמטתי את הelse כי בכל מקרה הreturn עוצר את הפונקציה.

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                ח 2 תגובות תגובה אחרונה
                3
                • ח מנותק
                  ח מנותק
                  חוקר
                  השיב לdovid ב נערך לאחרונה על ידי
                  #26

                  @dovid
                  רק תיקון קטן בשורה השניה

                      if (nearestIndex === 0) return {'next' : normalizedTimes[0]};
                  
                  dovidD תגובה 1 תגובה אחרונה
                  1
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    השיב לחוקר ב נערך לאחרונה על ידי
                    #27

                    @חוקר תיקנתי וגם תיקנתי את הסדר.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    1
                    • yossizY מחובר
                      yossizY מחובר
                      yossiz
                      השיב לdovid ב נערך לאחרונה על ידי
                      #28

                      @dovid אמר בשליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות:

                      אלא ש@yossiz בגאונות אופיינית

                      וואו, היה שוה ליכנס היום :smile:
                      עוד כמה מחמאות כאלו ואני כבר יוצא לגימלאות לשארית חיי...

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      תגובה 1 תגובה אחרונה
                      5
                      • ח מנותק
                        ח מנותק
                        חוקר
                        השיב לdovid ב נערך לאחרונה על ידי
                        #29

                        @dovid אמר בשליפת שעה קודמת ומאוחרת של הממצא המבוקש ממערך שעות:

                        return {'next' : normalizedTimes[nearestIndex - 1], 'previous' : normalizedTimes[nearestIndex]};
                        

                        אם אני צודק זה אמור להיות הפוך:

                        return {'previous' : normalizedTimes[nearestIndex - 1], 'next' : normalizedTimes[nearestIndex]};
                        

                        תקן אותי אם אני טועה

                        תגובה 1 תגובה אחרונה
                        1

                        • 1
                        • 2
                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום