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

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

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

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

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

    זה זה?

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

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

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

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

      ש תגובה 1 תגובה אחרונה
      0
      • ש מנותק
        ש מנותק
        ש.ב.ח.
        השיב ל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
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לש.ב.ח. ב נערך לאחרונה על ידי yossiz
            #6

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

            let filterB = [...filterA];
            

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

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

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

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

              @yossiz תודה

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

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

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

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

                ש תגובה 1 תגובה אחרונה
                0
                • ש מנותק
                  ש מנותק
                  ש.ב.ח.
                  השיב ל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
                    • ש מנותק
                      ש מנותק
                      ש.ב.ח.
                      השיב לdovid ב נערך לאחרונה על ידי
                      #11

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

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

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

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

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

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

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

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