freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../seek-and-destroy/index.md

125 lines
7.9 KiB
Markdown
Raw Normal View History

---
title: Seek and Destroy
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-arguments/14283)
* [Array.filter ()](http://forum.freecodecamp.com/t/javascript-array-prototype-filter/14289)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
تحتاج إلى العمل مع `arguments` كما لو كانت مجموعة منتظمة. أفضل طريقة هي تحويله إلى واحد.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
تحتاج إلى التصفية ، وهذا يعني أيضًا أنك تحتاج إلى إنشاء وظيفة رد اتصال. يمكنك استخدام أساليب مختلفة مثل: `indexOf()` ، `includes()` . إذا كنت بحاجة إلى طريقة أخرى ، فقد يكون `reduce()` أيضًا مفيدًا ؛ استمر في قراءة هذه المستندات!
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
لتحويل `arguments` إلى مصفوفة استخدم هذا الرمز `var args = Array.prototype.slice.call(arguments);`
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//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 destroyer(arr) {
var args = Array.prototype.slice.call(arguments);
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < args.length; j++) {
if (arr[i] === args[j]) {
delete arr[i];
}
}
}
return arr.filter(Boolean);
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/95)
### شرح الشفرة:
1. إنشاء صفيف من `arguments` باستخدام `Array.prototype.slice.call()` وتخزينها في `args` متغير. سنستخدم هذا للتحقق من `arr` .
2. بدء الأساسية `for` حلقة لتكرار خلال `arr` . عش آخر `for` حلقة داخل أولا، وتغيير عدد صحيح متغير `j` وصول إلى وسائط. سيتم تكرار هذه الحلقة الثانية من خلال `args` .
* ضمن الحلقة الثانية إنشاء بيان `if` ، بالتحقق بدقة `===` أن الحالي val `arr[i]` يساوي `args[j]` .
* إذا كانت القيمة في المؤشر الحالي _تساوي_ في كل من المصفوفات، استخدم `delete` لإزالته من `arr` .
3. خارج الحلقات المتداخلة: قم بإرجاع الصفيف المعدل باستخدام الكائن `Boolean` كمرشح لأي قيمة `null` تم إنشاؤها بواسطة عامل `delete` .
#### روابط ذات صلة
* \[الحجج
* [Array.filter ()](http://forum.freecodecamp.com/t/javascript-array-prototype-filter/14289)
* [حذف](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete)
* [منطقية](http://forum.freecodecamp.com/t/javascript-boolean/14311)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
`function destroyer(arr) {
var args = Array.from(arguments).slice(1);
return arr.filter(function(val) {
return !args.includes(val);
});
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/Ck2m/0)
### شرح الشفرة:
1. قم بتعريف متغير يسمى `args` وتعيينه يساوي كائن `Array` جديد `from()` `arguments` تم تمريرها إلى الدالة. على السطر نفسه أو التالي ، استخدم الطريقة `slice()` على `args` بدءًا من الفهرس الثاني ، 1. وهذا يفصل الوسيطات المستخدمة في التصفية في `args` الخاص من `args` .
2. عودة مجموعة تصفيتها، وذلك باستخدام `includes()` في وظيفة رد الاتصال للتحقق مما إذا `val` _ليس_ في `args` . إرجاع `true` للحفاظ على القيمة في الصفيف الأصلي أو `false` لإزالته.
#### روابط ذات صلة
* [الحجج](http://forum.freecodecamp.com/t/javascript-arguments/14283)
* [Array.slice ()](http://forum.freecodecamp.com/t/javascript-array-prototype-slice/14302)
* [Array.includes ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes)
## الحل المتقدم للكود:
`const destroyer = (arr, ...args) => arr.filter(i => !args.includes(i));
`
### شرح الشفرة:
* كود باستخدام صيغة ES6 لتعريف وظيفة باستخدام وظائف السهم.
* استخدام عامل انتشار لاسترداد الحجج.
* إرجاع الصف المفلتر ، باستخدام `includes()` .
#### روابط ذات صلة
* [انتشار المشغل](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/Spread_operator)
## ![: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) كمرجع.