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

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

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

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

    יש לי משתנה שמחזיק אובייקט, ואני רוצה להגדיר אותו לפי שרשור של ערך משתנה אחר + סטרינג.

      aaa = [{"0":"as"},{"1":"ASS"}];
      
      bbb = aaa + '.0';
    

    כשbbb אמור להחזיק ערך 'as'

    איך עושים את זה?
    תודה.

    תגובה 1 תגובה אחרונה
    0
  • 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
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

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

  • התחברו או הירשמו כדי לחפש.