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

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

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

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

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

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

    תודה

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

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

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

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

        י תגובה 1 תגובה אחרונה
        0
        • י מנותק
          י מנותק
          יוסף בן שמעון
          השיב לchagold ב נערך לאחרונה על ידי
          #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
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  השיב לchagold ב נערך לאחרונה על ידי 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
                    • י מנותק
                      י מנותק
                      יוסף בן שמעון
                      השיב לchagold ב נערך לאחרונה על ידי יוסף בן שמעון
                      #10

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

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

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

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

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

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

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

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

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