Avatar ·

كيفية إنشاء نسخة من مصفوفة في JavaScript بدلاً من مرجع إليها؟

مرحباً بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة لا أستطيع حلها. عندما أحاول نسخ مصفوفة، تؤثر التغييرات في المصفوفة الجديدة على الأصلية. إليك مثال: ```javascript let original = [1, 2, 3]; let copy = original; copy.push(4); console.log(original); // [1, 2, 3, 4] — لا أريد أن تتغير original! ``` أفهم أن `copy = original` لا ينشئ نسخة، بل مرجعاً لنفس المصفوفة. لكن كيف أجعل `copy` مستقلة تماماً؟ جربت `copy = original.slice()`، ونجح ذلك مع الأرقام البسيطة. لكن عندما تكون لدي مصفوفات متداخلة أو objects، لا تزال التغييرات تؤثر على الأصل: ```javascript let nested = [[1, 2], [3, 4]]; let copyNested = nested.slice(); copyNested[0].push(5); console.log(nested[0]); // [1, 2, 5] — تغيرت مرة أخرى! ``` ما المشكلة؟ كيف يمكنني إنشاء "نسخة عميقة" بحيث لا تؤثر أي تغييرات في النسخة على الأصل؟ يُفضل مع أمثلة لحالات مختلفة: المصفوفات البسيطة، مصفوفات objects، إلخ.