96 lines
7.2 KiB
Markdown
96 lines
7.2 KiB
Markdown
![]() |
---
|
|||
|
title: Profile Lookup
|
|||
|
localeTitle: بحث الملف الشخصي
|
|||
|
---
|
|||
|
 تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج  واكتب الكود الخاص بك 
|
|||
|
|
|||
|
###  شرح المشكلة:
|
|||
|
|
|||
|
لدينا مجموعة من الكائنات التي تمثل أشخاصًا مختلفين في قوائم جهات الاتصال الخاصة بنا.
|
|||
|
|
|||
|
`lookUpProfile()` التي تأخذ **الاسم الأول** و خاصية ( **prop** ) **كوسائط** قد تمت كتابتها مسبقًا نيابة عنك.
|
|||
|
|
|||
|
يجب التحقق من الوظيفة إذا كان **الاسم الأول** هو **الاسم الأول** جهة اتصال الفعلي وممتلكات معينة **(دعم)** هو خاصية من هذا الاسم.
|
|||
|
|
|||
|
إذا كان كلاهما صحيحًا ، فأعد _قيمة_ هذه الخاصية.
|
|||
|
|
|||
|
إذا كان **الاسم الأول** لا يتوافق مع أي جهات اتصال ، فعندئذ `No such contact` ترجع `No such contact` .
|
|||
|
|
|||
|
إذا كان **البروب** لا يتوافق مع أي خصائص صالحة ، فعندئذ `No such property` ترجع `No such property` .
|
|||
|
|
|||
|
* تغيير الرمز أدناه `// Only change code below this line` وحتى `// Only change code above this line` .
|
|||
|
* تأكد من أنك تقوم بتحرير داخل وظيفة `lookUpProfile()` .
|
|||
|
* تتضمن هذه الوظيفة معلمتين ، **firstName** و **prop** .
|
|||
|
* يجب أن تبحث الدالة من خلال قائمة **جهات الاتصال** لمعلمة **firstName** المحددة.
|
|||
|
* في حالة وجود تطابق موجود ، يجب أن تبحث الدالة عن معلمة **prop** المقدمة.
|
|||
|
* إذا تم **العثور على** كل من **firstName** و **prop** المقترن ، يجب عليك إرجاع قيمة **prop** .
|
|||
|
* إذا تم العثور على **firstName ولم** يتم العثور على **دعم** مقترن ، يجب عليك إرجاع `No such property` .
|
|||
|
* إذا لم يتم العثور على **الاسم الأول** في أي مكان، يجب أن تعيد `No such contact` .
|
|||
|
|
|||
|
#### روابط ذات صلة
|
|||
|
|
|||
|
* [التحدي: الوصول إلى خصائص الكائنات مع تدرج قوس](http://www.freecodecamp.com/challenges/accessing-objects-properties-with-bracket-notation)
|
|||
|
* [التحدي: تكرار مع JavaScript For Loops](http://www.freecodecamp.com/challenges/iterate-with-javascript-for-loops)
|
|||
|
|
|||
|
##  تلميح: 1
|
|||
|
|
|||
|
استخدم حلقة `for` للتنقل بين قائمة **جهات الاتصال** .
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
##  تلميح: 2
|
|||
|
|
|||
|
استخدام متداخلة `if` تصريح لالاختيار أولا إذا يطابق **الاسم الأول،** ومن ثم يتحقق `if` المباريات **دعامة.**
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
##  تلميح: 3
|
|||
|
|
|||
|
ترك لكم `return "No such contact"` من `for` حلقة كما التقاط كل النهائي.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
## تنبيه المفسد!
|
|||
|
|
|||
|

|
|||
|
|
|||
|
**الحل في المستقبل!**
|
|||
|
|
|||
|
##  الحل الأساسي للكود:
|
|||
|
|
|||
|
`for (var x = 0; x < contacts.length; x++){
|
|||
|
if (contacts[x].firstName === name) {
|
|||
|
if (contacts[x].hasOwnProperty(prop)) {
|
|||
|
return contacts[x][prop];
|
|||
|
} else {
|
|||
|
return "No such property";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return "No such contact";
|
|||
|
`
|
|||
|
|
|||
|
### شرح الشفرة:
|
|||
|
|
|||
|
* و `for` حلقة يدير، ابتداء من الساعة الكائن الأول في قائمة **الأسماء.**
|
|||
|
* إذا **تطابق** المعلمة **firstName** تمريرها في الدالة قيمة المفتاح `"firstName"` في الكائن الأول ، تمرير عبارة `if` .
|
|||
|
* ثم ، نستخدم `.hasOwnProperty()` طريقة (يتحقق إذا كان هناك خاصية معينة وترجع قيمة منطقية) **بالدعم** كوسيطة. إذا كان صحيحًا ، يتم إرجاع قيمة **الداعم** .
|
|||
|
* في `if` فشل العبارة الثانية في `if` عدم إرجاع `No such property` .
|
|||
|
* في `if` فشل العبارة الأولى في `if` استمرار حلقة `for` إلى الكائن التالي في قائمة **جهات الاتصال** .
|
|||
|
* إذا لم تطابق المعلمة **الاسم الأول** من قبل **الاتصالات** النهائية الاعتراض، و `for` مخارج حلقة و `No such contact` يتم إرجاعها.
|
|||
|
|
|||
|
**مثال تشغيل**
|
|||
|
|
|||
|
* `lookUpProfile("Akira","likes");` أشواط.
|
|||
|
* تتم مطابقة `"Akira"` مع المفتاح `"firstName"` في الكائن الأول ، لذا فإن العبارة `if` ترجع true.
|
|||
|
* تم العثور على `"likes"` داخل الكائن الأول ، لذا فإن العبارة الثانية `if` صحيحة.
|
|||
|
* يتم إرجاع قيمة `"likes"` - `"Pizza", "Coding", "Brownie Points"` .
|
|||
|
|
|||
|
##  ملاحظات للمساهمات:
|
|||
|
|
|||
|
*  **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
|
|||
|
* أضف شرحًا لحلك.
|
|||
|
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . 
|
|||
|
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . (  **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
|
|||
|
|
|||
|
> نرى  **`Wiki Challenge Solution Template`** كمرجع.
|