اذهب إلى المحتوى

السؤال

نشر

لنفترض أن لدي كائن بسيط بالشكل التالي:

 

const myObj = {
  a: 1, 
  b: 2, 
  c: 3
};

هل توجد حلقة مثل foreach للمرور على كل مفتاح key وقيمة value في الكائن السابق، لطباعتهما معًا؟ أريد أن تكون النتيجة بالشكل التالي:

a 1
b 2
c 3

 

Recommended Posts

  • 1
نشر

يمكنك ايضا استعمال التابع entries عن الكائن Object لطباعة كل مفتاح وقيمة على التوالي، يكون ذلك كـ:

Object.entries(obj)

يعيد هذا التابع مصفوفة ثنائية البعد Two-dimensional Arrays ذات ثنائيات مفتاح قيمة كـ:
 

[["p1", "value1"], ["p2", "value2"], ["p3", "value3"]]

يمكنك المرور عليها عن طريق اي تكرار، وليكن for in :

for (const [key, value] of result) {
    console.log(key, value);
}

فتكون كاملة الشيفرة:

const myObj = {
  a: 1, 
  b: 2, 
  c: 3
};

let i = Object.entries(myObj);

for (const [key, value] of i) {
    console.log(key, value);
}

الناتج:

"a", 1
"b", 2
"c", 3
  • 0
نشر

يمكنك المرور على كل العناصر في الـ object بعد طرق واسهلها هو استخدام الـ for in :

const myObj = {
  a: 1, 
  b: 2, 
  c: 3
};

for (key in  myObj) {
  console.log(key + " " + myObj[key])
}

// النتيجة ستكون كالتالي
// a 1
// b 2
// c 3

ويمكنك الاطلاع اكثر على for in من موسوعة حسوب

  • 0
نشر (معدل)

هناك أكثر من طريقة للوصول الى نفس النتيجة المطلوبة.

أحدى الطرق تكون كالتالي:

الدالة Object.keys تتيح لك الحصول على جميع مفاتيح الكائن على هيئة مصفوفة 

const myObj = {
  a: 1, 
  b: 2, 
  c: 3
};
const keys= Object.keys(myObj)

المتغير keys يحتوي على المصفوفة المذكورة أنفاً ["a", "b", "c"]

الان نستعمل forEach لكي نمر على جميع قيم المفاتيح

...
keys.forEach(function(key){
....
})
...

الأن نستطيع الحصول على القيم المقابلة لكل مفتاح من خلال الكائن الأصلي والمفتاح الحالي في الدورة الحالية من دالة forEach وكالتالي
 

...
let value = myObj[key]
...

 

الأن أصبح من السهل أخراج النتيجة المراد طباعتها في الكونسول كما يلي

...
console.log(key, value)
...

 

الكود كاملاً

const myObj = {
  a: 1, 
  b: 2, 
  c: 3
};

const keys= Object.keys(myObj)

keys.forEach(function(key){

	let value = myObj[key]
    
	console.log(key, value)
})
	
تم التعديل في بواسطة علي محسن
تنسيق النص

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...