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

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

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

פילטר עבור אובייקט מקונן - js

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

    זה זה?

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

      יהי קל להבין עם מבנה דמו, יש מצב?

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      ש תגובה 1 תגובה אחרונה
      0
      • dovidD dovid

        יהי קל להבין עם מבנה דמו, יש מצב?

        ש
        ש
        ש.ב.ח.
        כתב ב נערך לאחרונה על ידי ש.ב.ח.
        #4

        @dovid אמר בפילטר עבור אובייקט מקונן - js:

        יהי קל להבין עם מבנה דמו, יש מצב?

        בבקשה https://codesandbox.io/s/dtl9p?file=/src/dropdown.js

        הוא לא כזה קטן.. אבל בס"ה הפונקציה לפילטור כאן (תמונה מתוך הקוד החי):
        b8b42bac-6d6c-4db7-abc9-aac1753fc2cb-image.png

        תגובה 1 תגובה אחרונה
        0
        • ש
          ש
          ש.ב.ח.
          כתב ב נערך לאחרונה על ידי
          #5

          @dovid
          אני מנסה באמצעות הפונקציה הזאת אבל יש לי שגיאה
          bab9ff3c-ff9e-4441-b459-644899518ad5-image.png

          השגיאה:
          ec37b6dc-dc79-459c-ab6c-ede41ce385fa-image.png

          yossizY תגובה 1 תגובה אחרונה
          0
          • ש ש.ב.ח.

            @dovid
            אני מנסה באמצעות הפונקציה הזאת אבל יש לי שגיאה
            bab9ff3c-ff9e-4441-b459-644899518ad5-image.png

            השגיאה:
            ec37b6dc-dc79-459c-ab6c-ede41ce385fa-image.png

            yossizY
            yossizY
            yossiz
            כתב ב נערך לאחרונה על ידי yossiz
            #6

            @ש-ב-ח לא הבנתי עד הסוף את כל הקוד שלך, אבל האם אתה מודע לזה שההעתקה שעשית

            let filterB = [...filterA];
            

            הינה העתקה "שטחית" לא עמוקה, ככה שיוצא ש-filterB[key] מצביע בדיוק על אותו אובייקט ש-item מצביע.
            או במילים אחרות: filterB[key] === item

            למה זה readonly עוד לא הבנתי

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
            👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

            ש תגובה 1 תגובה אחרונה
            1
            • yossizY yossiz

              @ש-ב-ח לא הבנתי עד הסוף את כל הקוד שלך, אבל האם אתה מודע לזה שההעתקה שעשית

              let filterB = [...filterA];
              

              הינה העתקה "שטחית" לא עמוקה, ככה שיוצא ש-filterB[key] מצביע בדיוק על אותו אובייקט ש-item מצביע.
              או במילים אחרות: filterB[key] === item

              למה זה readonly עוד לא הבנתי

              ש
              ש
              ש.ב.ח.
              כתב ב נערך לאחרונה על ידי
              #7

              @yossiz תודה

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

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

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                ש תגובה 1 תגובה אחרונה
                0
                • dovidD dovid

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

                  ש
                  ש
                  ש.ב.ח.
                  כתב ב נערך לאחרונה על ידי ש.ב.ח.
                  #9

                  @dovid
                  זה הפונקציה שמספיקה לי
                  כמובן אחרי ההערה/הארה של @yossiz השתמשתי בספריית lodash

                     function filterNested(text){
                  
                          let filterA = items.filter( item => {
                              if(item.label.includes(text)) return true;
                              if(item.childes?.filter( child => child.label.includes(text)).length > 0) return true;
                          } );
                  
                         let filterB = _.cloneDeep(filterA);
                  
                          filterA.forEach((item, key) => {
                             if(item.childes.length > 0){
                  
                                 filterB[key].childes = item.childes.filter(child => child.label.includes(text));
                  
                                 if(filterB[key].childes.length <= 0){
                                    delete filterB[key];
                                 }
                             }
                          });
                  
                          return filterB;
                      }
                  

                  עריכה:
                  עדיין אם הצאצאים לא מחזירים true אבל האב מחזיר - הוא נמחק

                  אז זה העדכון

                  function filterNested(text){
                  
                          let filterA = items.filter( item => {
                              if(item.label.includes(text)) return true;
                              if(item.childes?.filter( child => child.label.includes(text)).length > 0) return true;
                          } );
                  
                         let filterB = _.cloneDeep(filterA);
                  
                          filterA.forEach((item, key) => {
                             if(!item.label.includes(text) && item.childes.length > 0){
                  
                                 filterB[key].childes = item.childes.filter(child => child.label.includes(text));
                  
                                 if(filterB[key].childes.length <= 0){
                                    delete filterB[key];
                                 }
                             }
                          });
                  
                          return filterB;
                      }
                  
                  תגובה 1 תגובה אחרונה
                  2
                  • dovidD
                    dovidD
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי dovid
                    #10

                    השתמשת בlodash רק להעתקת האובייקט..
                    אם כבר יש לך lodash כל דבר תבדוק איך עושים שמה, זה עולם ענק.
                    https://stackoverflow.com/a/34335131/1271037
                    עריכה: זה לא מה שאתה רוצה בכלל, אבל הסינון שמה עובד יופי בלי לולאה, צריך לשפץ קצת...

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    ש תגובה 1 תגובה אחרונה
                    0
                    • dovidD dovid

                      השתמשת בlodash רק להעתקת האובייקט..
                      אם כבר יש לך lodash כל דבר תבדוק איך עושים שמה, זה עולם ענק.
                      https://stackoverflow.com/a/34335131/1271037
                      עריכה: זה לא מה שאתה רוצה בכלל, אבל הסינון שמה עובד יופי בלי לולאה, צריך לשפץ קצת...

                      ש
                      ש
                      ש.ב.ח.
                      כתב ב נערך לאחרונה על ידי
                      #11

                      @dovid אמר בפילטר עבור אובייקט מקונן - js:

                      אם כבר יש לך lodash כל דבר תבדוק איך עושים שמה, זה עולם ענק

                      אני לא מכיר את הספרייה מלבד פקודה ספציפית זו 😕
                      אני לא אחת שואל את עצמי: "כדי ללמוד משהו אחד צריך ללמוד את כל ה... וכל ה... וכל ה..."
                      (כשאני אומר ללמוד, בכוונתי ששמתי לי מטרה לבניית איזה פרוייקט בלימוד, אמנם בדרך אני נאלץ - לשמחתי - להכיר לא מעט דברים חדשים שאינם נקשרים ללימוד הנוכחי)

                      לשם העניין
                      שמתי לעצמי מטרה (אני יודע שהיא מידי גדולה) ללימוד React בבניית דאשבורד מורכב.

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

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

                      נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                      בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                      הרשמה התחברות
                      תגובה
                      • תגובה כנושא
                      התחברו כדי לפרסם תגובה
                      • מהישן לחדש
                      • מהחדש לישן
                      • הכי הרבה הצבעות


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

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

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