freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/where-do-i-belong/index.md

205 lines
11 KiB
Markdown
Raw Normal View History

---
title: Where Do I Belong
localeTitle: إلى أين أنتمي
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
هذا يمكن أن يكون مشكلة صعبة لفهم. تحتاج إلى العثور على مكان في الصفيف يجب إدراج رقم بواسطة الأمر ، وإرجاع الفهرس حيث يجب أن تذهب.
#### روابط ذات صلة
* [شبيبة صفيف الفرز](http://forum.freecodecamp.com/t/javascript-array-prototype-sort/14306)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
أول شيء يجب فعله هو ترتيب الصفيف من الأسفل إلى الأعلى ، فقط لجعل الرمز أسهل. هذا هو المكان الذي يأتي فيه النوع ، فهو يحتاج إلى وظيفة رد اتصال حتى تضطر إلى إنشائه.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
بمجرد فرز الصفيف ، قم فقط بالتحقق من الرقم الأول الأكبر وإرجاع الفهرس.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
إذا لم يكن هناك مؤشر لهذا الرقم ، فسيتعين عليك التعامل مع هذه الحالة أيضًا.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
for (var a = 0; a < arr.length; a++) {
if (arr[a] >= num)
return a;
}
return arr.length;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/36)
## شرح الشفرة:
* أولاً ، أقوم بتصنيف الصفيف باستخدام. `.sort(callbackFuntion)` حسب الأقل إلى الأعلى ، من اليسار إلى اليمين.
* ثم أستخدم حلقة for لمقارنة العناصر الموجودة في الصفيف بدءًا من أصغرها. عندما يكون عنصر في الصفيف أكبر من الرقم الذي نقارنه ، فإننا نعيد الفهرس كعدد صحيح.
#### روابط ذات صلة
* [parseInt ()](http://forum.freecodecamp.com/t/javascript-parseint/14686)
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function getIndexToIns(arr, num) {
// Find my place in this sorted array.
var times = arr.length; // runs the for loop once for each thing in the array
var count = 0;
for (var i=0;i<times;i++){
if(num>arr[i]){count++;} } // counts how many array numbers are smaller than num
return count; // the above equals num's position in a sorted array
}
getIndexToIns([40, 60], 50);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/2547)
## شرح الشفرة:
* أنا لا فرز مصفوفة إدخال arr
* أقوم بحساب عد للفرز كلما كان إدخال num أكبر من رقم إدخال arr.
* هذا الرقم يساوي ما هو موضع num في مصفوفة مرتبة.
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
بواسطة [HarinaPana](/u/harinapana)
`function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
var i = 0;
while (num > arr[i]) {
i++;
}
return i;
}
getIndexToIns([40, 60], 50);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/4135)
## شرح الشفرة:
* فرز مجموعة موجودة.
* تكرار خلال مجموعة أثناء التحقق إذا _الأسطوانات_ هي الأكبر.
* ستتوقف الحلقة عندما لا تكون _num_ أكبر من _i_ وإرجاع العنصر الأخير محددًا.
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
بواسطة [faustodc](/u/faustodc)
`function getIndexToIns(arr, num) {
arr.push(num);
arr.sort(function(a, b){return ab});
return arr.indexOf(num);
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/EB10/1)
## شرح الشفرة:
* أولاً ، نضيف عدد `num` إلى الصفيف باستخدام `push()` الذي يضيفه كعنصر آخر في الصفيف.
* ثم نستخدم `sort()` مع وظيفة `function(a, b){return ab}` رد الاتصال `function(a, b){return ab}` لفرز الأرقام بترتيب تصاعدي.
* وأخيرًا ، نعيد عنوان أو فهرس `num` في الصفيف باستخدام الدالة `indexOf()` .
#### روابط ذات صلة
* [إدفع()](http://forum.freecodecamp.com/t/javascript-array-prototype-push/14298)
* [فرز()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
* [مؤشر()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
**باستخدام `.findIndex()`**
`function getIndexToIns(arr, num) {
// sort and find right index
var index = arr.sort((curr, next) => curr > next)
.findIndex((currNum)=> num <= currNum);
// Returns proper answer
return index === -1 ? arr.length : index;
}
getIndexToIns([40, 60], 500);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/63)
## شرح الشفرة:
* أولاً ، قم بفرز الصفيف بترتيب تصاعدي ، ويتم ذلك حاليًا باستخدام وظائف الصفيف للحد الأدنى من المساحة.
* بمجرد فرز المصفوفة ، نقوم مباشرة بتطبيق `.findIndex()` حيث سنقوم بمقارنة كل عنصر في المصفوفة حتى نجد `num <= currNum` حيث أن الرقم الذي نريد إدراجه هو أقل أو يساوي الرقم الحالي رقم في التكرار.
* ثم نستخدم العمليات الثلاثية للتحقق مما إذا حصلنا على فهرس تم إرجاعه أو `-1` . نحصل فقط على `-1` عندما لم يتم العثور على المعنى يعني عندما نحصل على خطأ بالنسبة لجميع العناصر في الصفيف ، وفي هذه الحالة ، يعني ذلك أنه يجب إدراج `num` في نهاية القائمة ومن ثمَّ ، لماذا نستخدم `arr.length` .
#### روابط ذات صلة
* [Array.findIndex ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex)
* [وظائف السهم](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
* [مشغل ثلاثي](http://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
بواسطة [nivrith](/u/nivrith)
`function getIndexToIns(arr, num) {
return arr.concat(num).sort((a,b) => ab).indexOf(num);
}
getIndexToIns([1,3,4],2);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/IUJE/0)
## شرح الشفرة:
* نستخدم تسلسل الأسلوب لاستدعاء طريقة واحدة تلو الأخرى لحل المشكلة في سطر واحد. أولاً نقوم بدمج `arr` و `num` باستدعاء طريقة arr.concat (num)
* ثم نستخدم `sort()` مع **وظيفة سهم** الاستعادة `(a, b) => return ab` لفرز الأرقام بترتيب تصاعدي
* وأخيرًا ، نعيد عنوان أو فهرس `num` في الصفيف باستخدام طريقة `indexOf()`
#### روابط ذات صلة
* [طريقة تسلسل في JavaScript](https://schier.co/blog/2013/11/14/method-chaining-in-javascript.html)
* [CONCAT ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/concat?v=example)
* [وظائف السهم](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.