שרשור ערכים בקוד JS
-
וכשהאינדקס הוא דינמי ויכול לכלול כמה איברים עד שמגיעים לתוצאה הרצויה, כזה:
var index = "chatuna.rikudim.rikudimrishonim";באיזה כיוון אני אמור לגשת לצורך הצמדת כל האיברים?
["chatuna"]["rikudim"]["rikudimrishonim"]כדי שאוכל אח"כ להצמיד את האינדקס לשליפת המערך/ הנתון הרצוי?
var bbb = aaa[index];תודה.
-
@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('.')) -
@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 אמר בשרשור ערכים בקוד 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') -
@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('.'))הדוגמא עובדת, אבל במימוש לא הצלחתי,
https://jsfiddle.net/dhpq4fok/5/ -
https://jsfiddle.net/dhpq4fok/10/
הבעיה שהוא לא מזהה את המשתנה $data. למה? -
לא. הבעיה שאתה מעביר נתיב שלא קיים.
בתור אובייקט נתת את 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 אמר בשרשור ערכים בקוד JS:
chatuna.rikudim.rikudimrishonim
עדיין לא עובד
https://jsfiddle.net/dhpq4fok/12/ -
@dovid אמר בשרשור ערכים בקוד JS:
chatuna.rikudim.rikudimrishonim
עדיין לא עובד
https://jsfiddle.net/dhpq4fok/12/@chagold אמר בשרשור ערכים בקוד JS:
@dovid אמר בשרשור ערכים בקוד JS:
chatuna.rikudim.rikudimrishonim
עדיין לא עובד
https://jsfiddle.net/dhpq4fok/12/נכון כי לfoo אין אלמנט בשם chatuna. אלא הוא מערך שמכיל איבר בודד שבתוכו יש אלמנט בשם chatuna.
אתה יכול להעביר לו appaa.$data.foo[0] או להוסיף לנתיב את האפס ככה:"0.chatuna.rikudim.rikudimrishonim.name"
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות