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

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

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

הדרך הקלה למצוא מספר בין לבין - js

מתוזמן נעוץ נעול הועבר תכנות
4 פוסטים 2 כותבים 73 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    כתב ב נערך לאחרונה על ידי ש.ב.ח.
    #1

    שלום וברכה

    יש לי מערך אם אובייקטים שבכל אובייקט יש איזה אחד הערכים שהוא מספר
    למשל:

    const regular = [
                        {
                            amount: 36000,
                            innerPrograms:[
                                { ... },
                                { ... },
                            ]
                        },
                        {
                            amount: 100000,
                            innerPrograms:[
                                { ... },
                                { ... },
                            ]
                        },
                        {
                            amount: 300000,
                            innerPrograms:[
                                { ... },
                                { ... },
                            ]
                        },
    ];
                       
    

    כנגדו יש לי מספר שאני צריך לבדוק לאיזה מערך הוא שייך - שווה או יותר מהמספר (כמובן רק לאחד מהם, כלומר אם מדובר ב300000 הוא יהיה שייך רק לאחרון)

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

    השאלה אם הדרך הנכונה היא אכן כך אלא שיש ראשית לסדר את המערך שיהיה מהקטן לגדול או שיש דרך קלה יותר?

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

      @ש-ב-ח כפי שאמרת, הדרך הקלה זה לעבוד עם אובייקט ממויין.
      אז השאלה היא איך ממיינים מערך בJS:

      var sorted = regular.sort((a, b) => a.amount - b.amount);
      

      אח"כ כפי שהצעת אז קל למצוא ככה:

      function getNearestAmount(sortedRegular input) {
        //מחפש את אינדקס האיבר הראשון שגדול מהערך המבוקש
        var nextOfInput = sortedRegular.findIndex(x => x.amount > input);
        
        if(nextOfInput == -1) //אם הוא לא מצא - כולם קטנים,
          return sortedRegular[sortedRegular.length - 1];
        if(nextOfInput == 0) 
          return sortedRegular[0];
        
        return sortedRegular[nextOfInput - 1];
      }
      

      אתה קורא לפונקציה עם המערך הממויין, ועם המספר אותו יש לחפש ומקבל את האיבר המתאים.

      התשובה שלי לקוחה מהתשובה היפה של @yossiz פה.

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

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

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

        @dovid אמר בהדרך הקלה למצוא מספר בין לבין - js:

        if(nextOfInput == 0)
        return sortedRegular[0];
        
        return sortedRegular[nextOfInput - 1];
        

        למה יהיה שונה 0 ממס' אחר?

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

          @ש-ב-ח השורה האחרונה שציטטת בעצמך עונה על השאלה.

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

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

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

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

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

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