شرح Arrays و Functions و Objects في JavaScript

x32x01
  • بواسطة x32x01 ||

إزاي تعمل Array في JavaScript؟ 🧺💻​

تقدر تعمل مصفوفة (Array) بطريقتين مشهورين:
JavaScript:
let arr1 = [1, 2, 3];
let arr2 = new Array(1, 2, 3);
✅ الأفضل في أغلب الحالات هو [ ] لأنها أوضح وأسهل.


الفرق بين push و unshift في المصفوفات 🧩​

  • push بيضيف عنصر في آخر المصفوفة
  • unshift بيضيف عنصر في أول المصفوفة
JavaScript:
let arr = [2, 3];
arr.push(4);     // [2, 3, 4]
arr.unshift(1);  // [1, 2, 3, 4]

إزاي تشيل عنصر من Array؟ 🗑️​

  • pop() بتشيل آخر عنصر
  • shift() بتشيل أول عنصر
JavaScript:
let arr = [1, 2, 3];
arr.pop();   // [1, 2]
arr.shift(); // [2, 3]

إزاي تعرف عنصر موجود ولا لأ؟ 🔍​

فيه طريقتين مشهورين:
  • includes() بترجع true/false
  • indexOf() بترجع رقم الـ index أو -1 لو مش موجود
JavaScript:
let arr = [1, 2, 3];
console.log(arr.includes(2)); // true
console.log(arr.indexOf(2));  // 1

ترتيب عناصر Array باستخدام sort 🧠📌​

الـ sort() بتعمل ترتيب… بس خد بالك إنها بتتعامل مع القيم كـ Strings افتراضيًا.
JavaScript:
let arr = [3, 1, 4, 1, 5];
arr.sort(); // [1, 1, 3, 4, 5]
وللترتيب الصحيح للأرقام (تصاعدي/تنازلي) استخدم compare function:
JavaScript:
arr.sort((a, b) => a - b); // تصاعدي
arr.sort((a, b) => b - a); // تنازلي

الفرق بين slice و splice ✂️⚠️​

  • slice بتقص جزء وترجع Array جديدة من غير ما تغيّر الأصل
  • splice بتقص/تحذف/تضيف وبتغيّر المصفوفة الأصلية
JavaScript:
let arr = [1, 2, 3, 4];
let sliced = arr.slice(1, 3); // [2, 3]
console.log(arr); // [1, 2, 3, 4]

arr.splice(1, 2); // arr بقت [1, 4]
console.log(arr);

تحويل Array إلى String باستخدام join 🔗​

JavaScript:
let arr = [1, 2, 3];
let str = arr.join("-");
console.log(str); // "1-2-3"

عكس ترتيب عناصر المصفوفة reverse 🔁​

reverse() بتعكس العناصر وبتعدّل نفس المصفوفة:
JavaScript:
let arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1]

دمج مصفوفتين concat و Spread Operator 🧩➕​

JavaScript:
let arr1 = [1, 2];
let arr2 = [3, 4];

let merged1 = arr1.concat(arr2);
let merged2 = [...arr1, ...arr2];

console.log(merged1); // [1, 2, 3, 4]
console.log(merged2); // [1, 2, 3, 4]

إزالة التكرارات من Array باستخدام Set ✅​

JavaScript:
let arr = [1, 2, 2, 3, 3, 3];
let uniqueArr = [...new Set(arr)];

console.log(uniqueArr); // [1, 2, 3]

إيجاد أول عنصر يحقق شرط find 🎯​

JavaScript:
let arr = [1, 2, 3, 4];
let firstEven = arr.find(x => x % 2 === 0);

console.log(firstEven); // 2


أنواع الحلقات (Loops) في JavaScript 🔄​

أشهر الحلقات:
  • for لما عدد التكرارات معروف
  • while لما الشرط هو اللي بيحدد
  • do...while بتنّفذ مرة على الأقل
  • for...in لتكرار خصائص الـ Objects
  • for...of لتكرار عناصر Arrays و Iterables


الفرق بين for و while ببساطة 🤝​

  • for: مناسب لما تعرف هتلف كام مرة
  • while: مناسب لما مش عارف العدد بس عندك شرط

إيقاف الحلقة break 🛑​

JavaScript:
for (let i = 0; i < 10; i++) {
  if (i === 5) break;
  console.log(i);
}

تخطي تكرار واحد continue ⏭️​

JavaScript:
for (let i = 0; i < 5; i++) {
  if (i === 2) continue;
  console.log(i);
}

التكرار على المصفوفة باستخدام forEach ✅​

JavaScript:
const numbers = [1, 2, 3];

numbers.forEach(number => {
  console.log(number);
});


يعني إيه Function في JavaScript؟ 🧠🧰​

Function هي مجموعة أوامر بتتكرر كتير، فبدل ما تكتبها كل مرة… بتحطها في دالة وتنادي عليها وقت ما تحب.
JavaScript:
function greet() {
  console.log("أهلاً بيك!");
}

greet();

إزاي تعرّف دالة؟ ✍️​

JavaScript:
function sum(a, b) {
  return a + b;
}

إزاي تستدعي دالة؟ 📞​

JavaScript:
console.log(sum(3, 5)); // 8


الفرق بين Regular Function و Arrow Function ⚡​

Regular Function​

JavaScript:
function sayHello(name) {
  return `أهلاً يا ${name}!`;
}

Arrow Function​

JavaScript:
const sayHello = (name) => `أهلاً يا ${name}!`;
✅ ملاحظة مهمة:
الـ Arrow Function سهل وسريع… بس this فيها مختلف، فمش دايمًا تنفع لكل الحالات.


هل ينفع Function جوه Function؟ ✅​

أيوه، وده بيخليك تعمل حاجات قوية جدًا:
JavaScript:
function outerFunction(x) {
  function innerFunction(y) {
    return x + y;
  }
  return innerFunction;
}

const add5 = outerFunction(5);
console.log(add5(10)); // 15

الفرق بين return و console.log 🤔​

  • return بترجع قيمة وتوقف الدالة
  • console.log بتطبع بس ومش بترجع حاجة
JavaScript:
function sum(a, b) {
  return a + b;
  console.log("مش هيتنفذ"); // مش هيوصل هنا
}

Recursion: هل الدالة تقدر تنادي نفسها؟ 🔁​

أيوه، وده اسمه Recursion:
JavaScript:
function factorial(n) {
  if (n === 0) return 1;
  return n * factorial(n - 1);
}

console.log(factorial(5)); // 120


الفرق بين Function Declaration و Function Expression 🧩​

Function Declaration (بتتعملها Hoisting)​

JavaScript:
function greet() {
  console.log("أهلاً!");
}

Function Expression (لازم تتعرّف الأول)​

JavaScript:
const greet = function () {
  console.log("أهلاً!");
};

دالة تستقبل عدد معاملات غير معروف Rest Parameters 📦​

JavaScript:
function sumAll(...numbers) {
  return numbers.reduce((sum, num) => sum + num, 0);
}

console.log(sumAll(1, 2, 3, 4)); // 10

Higher-Order Functions يعني إيه؟ 🧠✨​

دي دوال:
  • بتاخد دوال تانية كـ parameters
    أو
  • بترجع دالة كـ result
زي: map, filter, reduce
مثال map:
JavaScript:
const numbers = [1, 2, 3, 4];
const squared = numbers.map(num => num * num);

console.log(squared); // [1, 4, 9, 16]

الفرق بين map و forEach 🔥​

  • map بترجع Array جديدة
  • forEach بتعمل تنفيذ بس من غير return

reduce بتشتغل إزاي؟ 🧮​

JavaScript:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, cur) => acc + cur, 0);

console.log(sum); // 10

Object في JavaScript: يعني إيه كائن؟ 📦​

الـ Object بيخزن بيانات على شكل: key : value
JavaScript:
let person = {
  name: "John",
  age: 30,
  greet: function() {
    console.log("Hello!");
  }
};

طرق إنشاء Object 🏗️​

JavaScript:
let obj1 = {};
let obj2 = new Object();
let obj3 = Object.create(null);

Property vs Method 🔧​

JavaScript:
let car = {
  brand: "Toyota", // Property
  start: function() { // Method
    console.log("Car started");
  }
};

الوصول للخصائص Dot و Bracket 🧷​

JavaScript:
console.log(car.brand);
console.log(car["brand"]);

إضافة وتعديل وحذف خصائص ✍️🗑️​

JavaScript:
let obj = {};

obj.name = "John"; // إضافة
obj.name = "Doe";  // تعديل

delete obj.name;   // حذف


Object.keys و Object.values و Object.entries 🧠​

JavaScript:
let obj = { a: 1, b: 2 };

console.log(Object.keys(obj));    // ["a", "b"]
console.log(Object.values(obj));  // [1, 2]
console.log(Object.entries(obj)); // [["a", 1], ["b", 2]]


hasOwnProperty vs in 🔍​

JavaScript:
let obj = { a: 1 };

console.log(obj.hasOwnProperty("a")); // true
console.log("a" in obj);              // true
✅ الفرق: in بتشوف كمان اللي جاي من الـ prototype.


نسخ Object: Shallow Copy و Deep Copy 🧬​

Shallow Copy​

JavaScript:
let obj1 = { a: 1, b: { c: 2 } };
let shallowCopy = { ...obj1 };

Deep Copy​

JavaScript:
let deepCopy = JSON.parse(JSON.stringify(obj1));


Object.freeze و Object.seal 🧊🔒​

Object.freeze (تجميد كامل)​

JavaScript:
let obj = { a: 1 };
Object.freeze(obj);
obj.a = 2; // مش هيتغير

Object.seal (منع إضافة/حذف)​

JavaScript:
let obj2 = { a: 1 };
Object.seal(obj2);
obj2.a = 2;     // ينفع
delete obj2.a;  // مينفعش


this داخل Object 🧭​

JavaScript:
let user = {
  name: "John",
  greet: function() {
    console.log(this.name);
  }
};

user.greet(); // John


Prototype يعني إيه؟ 🧱​

Prototype نظام في JavaScript بيخلّي الكائنات تورّث خصائص ودوال من كائنات تانية.
JavaScript:
let obj = { a: 1 };
console.log(obj.__proto__); // Object prototype
والتحقق:
JavaScript:
let obj1 = {};
let obj2 = Object.create(obj1);

console.log(obj1.isPrototypeOf(obj2)); // true


الفرق بين Object.defineProperty و Object.defineProperties ⚙️​

  • Object.defineProperty لتحديد خاصية واحدة مع إعدادات
  • Object.defineProperties لتحديد كذا خاصية مرة واحدة
مثال سريع:
JavaScript:
let obj = {};

Object.defineProperty(obj, "name", {
  value: "Ahmed",
  writable: false
});

console.log(obj.name); // Ahmed


الخلاصة 🔥​

لو فهمت:
  • Arrays + Methods
  • Loops + break/continue
  • Functions + Arrow + Higher-Order
  • Objects + Prototype
يبقى أنت كده ماسك أساس JavaScript الصح 💪💻
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
567
x32x01
x32x01
x32x01
الردود
0
المشاهدات
92
x32x01
x32x01
x32x01
الردود
0
المشاهدات
809
x32x01
x32x01
x32x01
الردود
0
المشاهدات
87
x32x01
x32x01
x32x01
الردود
0
المشاهدات
826
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,304
المشاركات
2,517
أعضاء أكتب كود
556
أخر عضو
عبدالاله بوعبال
عودة
أعلى