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

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

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

חיפוש איבר במערך JS

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

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

    פורסם במקור בפורום CODE613 ב07/03/2016 23:57 (+02:00)

    תגובה 1 תגובה אחרונה
    1
    • avrahamA מנותק
      avrahamA מנותק
      avraham
      כתב ב נערך לאחרונה על ידי
      #3

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

      פורסם במקור בפורום CODE613 ב08/03/2016 00:32 (+02:00)

      תגובה 1 תגובה אחרונה
      0
      • רחמיםר מנותק
        רחמיםר מנותק
        רחמים מורחק
        כתב ב נערך לאחרונה על ידי
        #4

        הוא משתמש בלולאה אבל לא עובר על כל המערך אלא על איברים מייצגים.

        פורסם במקור בפורום CODE613 ב08/03/2016 07:27 (+02:00)

        תגובה 1 תגובה אחרונה
        2
        • avrahamA מנותק
          avrahamA מנותק
          avraham
          כתב ב נערך לאחרונה על ידי
          #5

          המערך הוא אוסף מחרוזות, ואני מחפש פוקציה כמו indexOf שיודעת לחפש תו במחרוזת בלי לולאה בכלל, כך שיחפש לי את המחרוזת הספציפית בלי לולאה. יש כזה דבר?

          פורסם במקור בפורום CODE613 ב08/03/2016 08:24 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • א מנותק
            א מנותק
            ארכיטקט
            כתב ב נערך לאחרונה על ידי
            #6

            @avraham

            האם אפשר לחפש במערך אם יש בו איבר מסוים, בלי לעבור בלולאה על המערך?

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

            פורסם במקור בפורום CODE613 ב08/03/2016 08:33 (+02:00)

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

            תגובה 1 תגובה אחרונה
            3
            • A מנותק
              A מנותק
              avr416
              כתב ב נערך לאחרונה על ידי
              #7

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

              פורסם במקור בפורום CODE613 ב08/03/2016 11:12 (+02:00)

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

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

                אבל אם כבר הוא שאל הוא אכן למד לדעת שindexOf לא עובד חכם באוסף מסודר (המשמעות מתחילה במערך ענק).

                החיפוש הבינארי חותך כל פעם לשתיים. זה פעולה הפוכה מחזקת 2 שכל פעם מכפילה את גודלה.
                במקרה הגרוע ביותר זה הנוסחה log(n) : זה נוסחה שמחזירה את המספר שדרוש ל"חזק" את שתיים עד שתגיע למס' של כל האיברים.
                אם יש 10000 איברים אז זה 10 פעמים שכן 2 בחזקת 9.9 זה 1000 בקירוב (באקסל ע"י הנוסחה log עם פרמטר שני 2).
                במקרה הנורמלי זה יהיה 5 פעמים.

                הספריה underscore מממשת את זה בindexOf שלה.

                _.indexOf(array, value, true) // הארגומנט השלישי מאשר שהמערך ממויין
                

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

                פורסם במקור בפורום CODE613 ב08/03/2016 11:30 (+02:00)

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

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

                תגובה 1 תגובה אחרונה
                3
                • א מנותק
                  א מנותק
                  אהרן
                  כתב ב נערך לאחרונה על ידי
                  #9

                  צריך אבל לזכור למיין כל הזמן
                  וגם זה עולה ביצועים

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

                  פורסם במקור בפורום CODE613 ב08/03/2016 11:47 (+02:00)

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

                    לא למיין אלא להכניס במקום הנכון (לא מצאתי לזה מימוש מוכן! נו). זה אכן עולה אבל ההנחה היא שיותר ניגשים מאשר מכניסים.

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

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

                    פורסם במקור בפורום CODE613 ב08/03/2016 12:58 (+02:00)

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

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

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

                      @דוד ל.ט.

                      לא למיין אלא להכניס במקום הנכון (לא מצאתי לזה מימוש מוכן! נו).

                      חצי כבר ממומש - למצוא מיקום, אז זה לא נורא:

                      var newItem = 3;
                      list.splice(_.sortedIndex(list, newItem), 0, newItem)
                      

                      פורסם במקור בפורום CODE613 ב08/03/2016 13:38 (+02:00)

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

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

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

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

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

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