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

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

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

שרשור ערכים בקוד JS

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 3 כותבים 1.0k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #2
    var index = "0";
    var bbb = aaa[index];
    

    זה עובד הן עבור מערכים והן עבור אובייקטים.

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

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

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

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

       var index = "chatuna.rikudim.rikudimrishonim";
      

      באיזה כיוון אני אמור לגשת לצורך הצמדת כל האיברים?

        ["chatuna"]["rikudim"]["rikudimrishonim"]
      

      כדי שאוכל אח"כ להצמיד את האינדקס לשליפת המערך/ הנתון הרצוי?

       var bbb = aaa[index];
      

      תודה.

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

        @chagold אמר בשרשור ערכים בקוד JS:

        chatuna.rikudim.rikudimrishonim"

        
        function getNestedObj(obj, arr){
          var last = obj;
        
          for(var i = 0; i < arr.length; i++)
            last = last[arr[i]];
        
          return last;
        }
        
        
        

        תשתמש עם זה ככה:

        var obj = {chatuna: { rikudim: { rikudimrishonim: "dagim" } } };
        var path = "chatuna.rikudim.rikudimrishonim";
        
        getNestedObj(obj, path.split('.'))
        
        

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

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

        zvizviZ chagoldC 2 תגובות תגובה אחרונה
        2
        • zvizviZ מנותק
          zvizviZ מנותק
          zvizvi
          השיב לdovid ב נערך לאחרונה על ידי zvizvi
          #5

          @dovid אמר בשרשור ערכים בקוד JS:

          @chagold אמר בשרשור ערכים בקוד JS:

          chatuna.rikudim.rikudimrishonim"

          תשתמש עם זה ככה:

          var obj = {chatuna: { rikudim: { rikudimrishonim: "dagim" } } };
          var path = "chatuna.rikudim.rikudimrishonim";
          
          getNestedObj(obj, path.split('.'))
          
          

          או בקצרה עם ספריית lodash.

          var obj = {chatuna: { rikudim: { rikudimrishonim: "dagim" } } };
          
          _.get(obj, 'chatuna.rikudim.rikudimrishonim')
          
          
          

          https://zvizvi.xyz

          תגובה 1 תגובה אחרונה
          1
          • chagoldC מנותק
            chagoldC מנותק
            chagold
            השיב לdovid ב נערך לאחרונה על ידי
            #6

            הדוגמא עובדת, אבל במימוש לא הצלחתי,
            https://jsfiddle.net/dhpq4fok/5/

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

              תנסה להבין את הבעייתיות של שתי השורות האלה:

              var path = "appaa.$data.foo" + ".chatuna.rikudim.rikudimrishonim";
              alert( getNestedObj(appaa.$data.foo, path.split('.') ));
              

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

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

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

                https://jsfiddle.net/dhpq4fok/10/
                הבעיה שהוא לא מזהה את המשתנה $data. למה?

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

                  לא. הבעיה שאתה מעביר נתיב שלא קיים.
                  בתור אובייקט נתת את appaa.$data.foo שזה אומר שורה תחתונה תוכנו של foo.
                  בתור נתיב נתת את "appaa.$data.foo.chatuna.rikudim.rikudimrishonim"
                  הפוקנציה מנתחת את זה כאילו כתוב ככה:

                  appaa.$data.foo["appaa"]["$data"]["foo"]["chatuna"]["rikudim"]["rikudimrishonim"]
                  

                  הבעיה שappaa.$data.foo אין אלמנט בשם appaa.

                  אילו היית מעביר רק את הנתיב הנדרש, למשל: "chatuna.rikudim.rikudimrishonim", זה היה עובד יופי.
                  לחילופין יכול להעביר במקום את appaa.$data.foo, את appaa לבד, ובתור נתיב את הכל (מלבד שם האב - שהרי אין בappaa אלמנט בשם appaa) ככה:

                  var path = "$data.foo.chatuna.rikudim.rikudimrishonim";
                  

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

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

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

                    @dovid אמר בשרשור ערכים בקוד JS:

                    chatuna.rikudim.rikudimrishonim

                    עדיין לא עובד
                    https://jsfiddle.net/dhpq4fok/12/

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

                      @chagold אמר בשרשור ערכים בקוד JS:

                      @dovid אמר בשרשור ערכים בקוד JS:

                      chatuna.rikudim.rikudimrishonim

                      עדיין לא עובד
                      https://jsfiddle.net/dhpq4fok/12/

                      נכון כי לfoo אין אלמנט בשם chatuna. אלא הוא מערך שמכיל איבר בודד שבתוכו יש אלמנט בשם chatuna.
                      אתה יכול להעביר לו appaa.$data.foo[0] או להוסיף לנתיב את האפס ככה:

                       "0.chatuna.rikudim.rikudimrishonim.name"
                      

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

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

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

                        @dovid תודה רבה.

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

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

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

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