העתקה שטחית והעתקה עמוקה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-JavaScript של Coddy. שיעור 25 מתוך 65.
בעת העתקת אובייקטים, יש לנו שני סוגי העתקות:
- העתקה שטחית - מעתיקה רק את הרמה הראשונה
- העתקה עמוקה - מעתיקה את כל הרמות המקוננות
שיטות להעתקה שטחית:
שימוש באופרטור הפריסה:
const original = { a: 1, b: { x: 2 } };
const spreadCopy = { ...original };שימוש ב־Object.assign(), שיוצרת אובייקט חדש על ידי העתקת מאפיינים מאובייקט המקור לאובייקט היעד:
const assignCopy = Object.assign({}, original);בעיה בהעתקה שטחית:
original.b.x = 3;
console.log(spreadCopy.b.x); // 3
// (אובייקטים מקוננים חולקים את אותה הפניה)
console.log(assignCopy.b.x); // 3הבנת שיטות JSON והעתקה עמוקה
JSON.stringify() ממירה אובייקט JavaScript למחרוזת JSON:
const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // "{"name":"John","age":30}"JSON.parse() ממירה מחרוזת JSON בחזרה לאובייקט JavaScript:
const backToObject = JSON.parse(jsonString);
console.log(backToObject); // { name: "John", age: 30 }העתקה עמוקה באמצעות JSON:
const original = { a: 1, b: { x: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));
original.b.x = 3;
console.log(deepCopy.b.x); // 2 (בלתי תלוי לחלוטין)אתגר
קלצרו פונקציה בשם processCart שמקבלת מחרוזת JSON המייצגת עגלת קניות. העגלה מכילה מערך של מוצרים עם שמות ומחירים. המשימה שלכם היא:
- לנתח את מחרוזת ה-JSON לאובייקט JavaScript
- ליצור ממנה שתי עגלות נפרדות
- בעגלה השנייה:
- להוסיף לכל פריט מאפיין
discountedשערכו false - להחיל הנחה של 10% על כל הפריטים שהערך של
priceשלהם גדול מ-50 - להגדיר את 'discounted' לערך true עבור הפריטים שקיבלו את ההנחה
- להוסיף לכל פריט מאפיין
- להחזיר מערך המכיל את שתי העגלות
נסו בעצמכם
function processCart(jsonString) {
// כתבו כאן קוד
}
// אל תכתבו דבר מחוץ לפונקציההשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
4JSON חלק 2
מעבר על JSONJSON מקונןשרשור אופציונלי ב-JSONהעתקה שטחית והעתקה עמוקהסיכום - חנות אופנייםסיכום - מערכת השמש10ניהול מערכת הפסטיבל
סקירת הפרויקטהוספת סרטים ואולמות2מערכים רב־ממדיים
יסודות המערכים הדו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום – מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים משונניםמערכים תלת־ממדיים ומעבר לכךתבניות נפוצות במערכים דו־ממדייםסיכום – כל מה שצריך לדעת על מערכיםתרגלו בעצמכם: קומפיילר JavaScript אונליין