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

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

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

סינון מערך התלוי בנתוני כמה פרמטרים (שחלקם לא יגיעו) - js

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

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

    תודה

    תגובה 1 תגובה אחרונה
    0
    • י
      י
      יוסף בן שמעון
      כתב ב נערך לאחרונה על ידי יוסף בן שמעון
      #2

      אתה רוצה לאפשר למשתמש לסנן לפי שם או כתובת וכו'?
      https://jsfiddle.net/oh67frLy/

      תגובה 1 תגובה אחרונה
      4
      • chagoldC
        chagoldC
        chagold
        כתב ב נערך לאחרונה על ידי chagold
        #3

        @יוסף-בן-שמעון לא הבנתי איך צירפת בזה 2 סינונים שונים.

        י תגובה 1 תגובה אחרונה
        0
        • chagoldC chagold

          @יוסף-בן-שמעון לא הבנתי איך צירפת בזה 2 סינונים שונים.

          י
          י
          יוסף בן שמעון
          כתב ב נערך לאחרונה על ידי
          #4

          @chagold אמר בסינון מערך התלוי בנתוני כמה פרמטרים (שחלקם לא יגיעו) - js:

          איך צירפת בזה 2 סינונים שונים

          אשמח להסביר, אבל לא הבנתי את הניסוח, מה זה "2 סינונים שונים"?

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

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

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

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

              הדוגמא ש@יוסף-בן-שמעון סיפק עונה בשלמות על מה שביקשת, וזה מה שהוא הבין לכתחילא:

              הקריאה לפונקציית הסינון כוללת אובייקט:

               filter({ name: 'david', city: 'jerusalem' })
              

              משמעותו של המקרה הזה: עיר ששמה ירושלים ושם ששמו דוד.
              אם תוסיף מאפיינים או תסיר זה יסנן בהתאם.

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

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

                @יוסף-בן-שמעון @dovid תודה.
                איך אני מכניס באובייקט (שנשלח כפרמטר לfilterBy) אפשרות של 'או'.
                (עיר: ירושלים או בניברק)

                dovidD תגובה 1 תגובה אחרונה
                0
                • chagoldC chagold

                  @יוסף-בן-שמעון @dovid תודה.
                  איך אני מכניס באובייקט (שנשלח כפרמטר לfilterBy) אפשרות של 'או'.
                  (עיר: ירושלים או בניברק)

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

                  @chagold אם תמיד תרצה או, אז זה שינוי קל בקוד של @יוסף-בן-שמעון, במקום:

                  for (let i in filterBy) {
                      if (user[i] !== filterBy[i]) return false;
                  }
                  return true;
                  

                  אז תכתוב

                  for (let i in filterBy) {
                      if (user[i] == filterBy[i]) return true;
                  }
                  return false;
                  

                  אבל אם תרצה שיהיה סטים של תנאים, שדי בהתאמה של סט אבל כל סט הוא "גם", אז צריך לשכלל את הקוד ככה:

                  array = [
                      { name: "david", city: "jerusalem"}, 
                      { name: "yosef", city: "bne-brak"}, 
                      { name: "moshe", city: "jerusalem"}
                  ]
                  
                  function filter(conditionArr) {
                    if(!conditionArr || !conditionArr.length)
                        return array;
                        
                    return array.filter(function(el){
                       for (let set of conditionArr) 
                          if(filterElement(el, set))
                              return true;
                       
                       return false;
                    });
                  }
                  
                  
                  function filterElement(element, filterBy) {
                    for (let i in filterBy) 
                      if (element[i] !== filterBy[i])
                         return false;
                    return true;
                  }
                  
                  let results = filter([{ name: 'david'},{city: 'bne-brak' }]);
                  

                  https://jsfiddle.net/sdo4mj2p/

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

                    @dovid דבר ראשון תודה על ההשקעה.

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

                    עכשיו עלה לי רעיון פשוט, השאלה איך אפשר ליישם אותו, שיהיה תנאי על כל שדה אם יש בו ערך ואז הוא יצורף למשפט, משהו בסגנון (של) https://jsfiddle.net/wm6hrv95/1/

                    י תגובה 1 תגובה אחרונה
                    0
                    • chagoldC chagold

                      @dovid דבר ראשון תודה על ההשקעה.

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

                      עכשיו עלה לי רעיון פשוט, השאלה איך אפשר ליישם אותו, שיהיה תנאי על כל שדה אם יש בו ערך ואז הוא יצורף למשפט, משהו בסגנון (של) https://jsfiddle.net/wm6hrv95/1/

                      י
                      י
                      יוסף בן שמעון
                      כתב ב נערך לאחרונה על ידי יוסף בן שמעון
                      #10

                      @chagold אמר בסינון מערך התלוי בנתוני כמה פרמטרים (שחלקם לא יגיעו) - js:

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

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

                      תגובה 1 תגובה אחרונה
                      2
                      • chagoldC
                        chagoldC
                        chagold
                        כתב ב נערך לאחרונה על ידי chagold
                        #11

                        @יוסף-בן-שמעון @dovid מעולה.
                        תודה רבה
                        (עריכה)https://jsfiddle.net/bmp4r19v/

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

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

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

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

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


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

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

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