7.9 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Seek and Destroy | تسعى وتدمر |
تذكر استخدام Read-Search-Ask إذا واجهتك مشكلة. حاول إقران البرنامج
واكتب الكود الخاص بك 
شرح المشكلة:
هذه المشكلة صعبة بعض الشيء لأنك يجب أن تتعرف على الحجج ، حيث سيكون عليك العمل مع اثنين أو أكثر ولكن على النص الذي ترونه فقط. كثير من الناس ترميز هذا البرنامج لثلاث حجج. ستقوم بإزالة أي رقم من الوسيطة الأولى وهو نفس أي وسيطة أخرى.
روابط ذات صلة
تلميح: 1
تحتاج إلى العمل مع arguments كما لو كانت مجموعة منتظمة. أفضل طريقة هي تحويله إلى واحد.
حاول أن تحل المشكلة الآن
تلميح: 2
تحتاج إلى التصفية ، وهذا يعني أيضًا أنك تحتاج إلى إنشاء وظيفة رد اتصال. يمكنك استخدام أساليب مختلفة مثل: indexOf() ، includes() . إذا كنت بحاجة إلى طريقة أخرى ، فقد يكون reduce() أيضًا مفيدًا ؛ استمر في قراءة هذه المستندات!
حاول أن تحل المشكلة الآن
تلميح: 3
لتحويل arguments إلى مصفوفة استخدم هذا الرمز var args = Array.prototype.slice.call(arguments);
حاول أن تحل المشكلة الآن
تنبيه المفسد!
الحل في المستقبل!
الحل الأساسي للكود:
`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); } `
شرح الشفرة:
-
إنشاء صفيف من
argumentsباستخدامArray.prototype.slice.call()وتخزينها فيargsمتغير. سنستخدم هذا للتحقق منarr. -
بدء الأساسية
forحلقة لتكرار خلالarr. عش آخرforحلقة داخل أولا، وتغيير عدد صحيح متغيرjوصول إلى وسائط. سيتم تكرار هذه الحلقة الثانية من خلالargs.-
ضمن الحلقة الثانية إنشاء بيان
if، بالتحقق بدقة===أن الحالي valarr[i]يساويargs[j]. -
إذا كانت القيمة في المؤشر الحالي تساوي في كل من المصفوفات، استخدم
deleteلإزالته منarr.
-
-
خارج الحلقات المتداخلة: قم بإرجاع الصفيف المعدل باستخدام الكائن
Booleanكمرشح لأي قيمةnullتم إنشاؤها بواسطة عاملdelete.
روابط ذات صلة
- [الحجج
- Array.filter ()
- حذف
- منطقية
حل الشفرة المتوسطة:
function destroyer(arr) { var args = Array.from(arguments).slice(1); return arr.filter(function(val) { return !args.includes(val); }); }
شرح الشفرة:
-
قم بتعريف متغير يسمى
argsوتعيينه يساوي كائنArrayجديدfrom()argumentsتم تمريرها إلى الدالة. على السطر نفسه أو التالي ، استخدم الطريقةslice()علىargsبدءًا من الفهرس الثاني ، 1. وهذا يفصل الوسيطات المستخدمة في التصفية فيargsالخاص منargs. -
عودة مجموعة تصفيتها، وذلك باستخدام
includes()في وظيفة رد الاتصال للتحقق مما إذاvalليس فيargs. إرجاعtrueللحفاظ على القيمة في الصفيف الأصلي أوfalseلإزالته.
روابط ذات صلة
الحل المتقدم للكود:
const destroyer = (arr, ...args) => arr.filter(i => !args.includes(i));
شرح الشفرة:
- كود باستخدام صيغة ES6 لتعريف وظيفة باستخدام وظائف السهم.
- استخدام عامل انتشار لاسترداد الحجج.
- إرجاع الصف المفلتر ، باستخدام
includes().
روابط ذات صلة
ملاحظات للمساهمات:
لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.- أضف شرحًا لحلك.
- تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم .

- الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . (
لا تزيل أي أسماء مستخدمين حالية )
نرى
![]()
Wiki Challenge Solution Templateكمرجع.


