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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 3 כותבים 183 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י מנותק
    י מנותק
    יוסף בן שמעון
    כתב ב נערך לאחרונה על ידי יוסף בן שמעון
    #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
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום