ما هي جملة الـfor in في جافاسكربت

هل يمكن لأحد أن يشرح لي ما عمل جملة for in في جافاسكربت؟


هذه العبارة من عبارات الدوران؛ تستخدم للمرور على مفاتيح العنصر واحد ثم واحد، مثلًا في المصفوفة التالية:

var array = ["a", "b", "c", "d"]
for (let i in array) console.log(i);

سيكون الناتج مفاتيح تلك المصفوفة على الترتيب 0، 1، 2، 3، ويمكنك استخدام هذا المفتاح لتعديل أحد العناصر array[0] مثلًا، هل تعمل مع المصفوفات فقط؟ لا، يمكن مثلًا مع كائن:

var obj = {
    "a": 0,
    "b": 1,
    "c": 2,
    "d": 3
}
for (let i in obj) console.log(i);

سيكون الناتج مفاتيح عناصر ذلك الكائن a، b، c، d، ويمكن استخدامها أيضًا مع النصوص. للفائدة يوجد عبارة أخرى for of في ES6 التي تدور حول عناصر المصفوفة:

var array = ["a", "b", "c", "d"]
for (let e of array) console.log(e);

لكن مع ذلك كن حريصًا عند استخدام أحد هاتين العبارتين؛ فلا يوجد دعم كامل لهما من كل المتصفحات ومحركات JS، قد تجد بعض الأنواع غير مدعومة، أو لا تجد دعمًا أصلًا -عليك أن تعرف أين ستعمل شيفرتك لتستخدمها أم لا-، أو تستخدم مفسر كمفسر Babel.js -لستُ متأكد من شيفرة الناتج ستعمل على ES3، أو ES5 أم لا أستخدم TypeScript-، أو استخدم التبعيات للمصفوفات كـforEach، map ..، ويمكنك صنع تطبيق لهذه التبعيات يعمل على أي محرك إن لم يعمل أو الحصول على واحد قياسي.

انا لدي هذا الكود:

الـ for in موجودة داخل دالة

for(var names in contects)
{
    console.log(names);
}

و لدي اثنان اوبجكت في الاعلى و كل اوجكت يحوي على اسم او contact فما معني الا for in في هذه الحالة

يوسف سيد أضف ردا

هذه تعني طباعة/إدخال مفاتيح الكائن contects في الـConsole واحد ثم واحد.

Obada_Oyoun أضف ردا

لماذا نعامل الـcontacts على انه كائن مع انه باراميتر؟

و ماذا تقصد بواحد ثم واحد؟

و شكرا

لماذا نعامل الـcontacts على انه كائن مع انه باراميتر؟

ما فهمته من تعليقك أنّك تقصد كائن، وللمناسبة لا علاقة للكائن بالمعطى(Parameter) الأول الكائن من الأنوع الأساسية في JS، والمعطى هو جزء من الدالة/الوظيفة، ما يدخل إليها.

و ماذا تقصد بواحد ثم واحد؟

إذا كان لديك كائنٌ كهذا:

{ 
    name: "obada_oyoun",
    userAt: "Hsoub IO",
    language: "JS"
}

ونفذتَ for in عليه فستمر على المفاتيح واحد بواحد من name إلى language، هذه الشيفرة:

var obj = { 
    name: "obada_oyoun",
    userAt: "Hsoub IO",
    language: "JS"
}

for (let key in obj) {
    console.log(key);
    obj[key] = "new data";
}
// في النهاية سيكون لديك
// obj = {name: "new data", userAt: "new data" ..}

كأنك تنفذ:

var obj = { 
    name: "obada_oyoun",
    userAt: "Hsoub IO",
    language: "JS"
}

var key;

key = "name";
console.log(key);
obj[key] = "new data";

key = "userAt";
console.log(key);
obj[key] = "new data";

key = "language";
console.log(key);
obj[key] = "new data";

شكرا لك جدا على الشرح

لقد وضحت لي الان :)