Underscore: _.without لقبول المصفوفة كوسيطة ثانية

تم إنشاؤها على ٢١ يناير ٢٠١١  ·  10تعليقات  ·  مصدر: jashkenas/underscore

التعريف الحالي لـ _.without قبول المصفوفة كأول وسيطة ثم أي عدد من الوسائط التالية. أعلم أنه قد يصبح معقدًا ، لكنه سيكون مفيدًا ، إذا تمكنت من تمرير مصفوفة أخرى كحجة.

ستعمل الوظيفة الجديدة كـ
_.without ([1،2،3] ، [1 ، 2])
عائدات
[3]

على حد علمي _. بدون لا يعمل بعمق ، لذلك قد لا يكون الأمر معقدًا -
_.without ([1،2،3 ، [1]] ، [1] ، 1)
عائدات
[2 ، 3 ، [1]]

enhancement wontfix

التعليق الأكثر فائدة

بالنسبة لأولئك الذين يجدون طريقهم هنا .... _الفرق ([0 ، 1 ، 3 ، 9] ، [1 ، 3]) ؛ // => [0 ، 9]

من: http://stackoverflow.com/questions/5722254/underscore-js-is-there-a-function-that-produces-an-array-thats-the-difference

ال 10 كومينتر

لحسن الحظ ، تحتوي JavaScript على طريقة مضمنة لتمرير وظيفة أي عدد من الوسائط.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply

_.without.apply(_, [1, 2, 3], [1, 2])

شيء أكيد! يا غبي كيف أنسى ...

يبدو أنه يجب تسميته بهذا الشكل

_.without.apply(_, [[1,2,3], 1, 2])

مما يجعل الأمر معقدًا بعض الشيء (فك تغيير صفيف الاستبعاد مع المصفوفة الأصلية).

تحديث: لقد أنشأت تذكرة جديدة لهذه المشكلة: https://github.com/documentcloud/underscore/issues/issue/118

يجب أن أوافق على كلاكما: إلى جيريمي للحفاظ على _. بدون توقيع متسق ولأوندري لإيجاد حل بديل اقترحه جيريمي قليلاً (لا يبدو أنه يعمل بالنسبة لي أيضًا).

وبالتالي ، أريد أن أقترح إدخال وظيفتين جديدتين للشرطة السفلية: _.difference(*arrays) و _.symdifference(a,b) : الاختلاف يكتشف جميع العناصر الموجودة في المصفوفة الأولى التي لا تظهر في المصفوفات الأخرى المتوفرة ، حيث تقوم _.symdifference () بإرجاع تلك العناصر الموجودة إما في a أو في b ولكن ليس في كليهما.

يأتي "الإلهام" لهذه الوظائف من نوع بيانات مجموعة Python و IMHO ، فلا ينبغي أن تقتصر على المصفوفات ، نظرًا لأنها قابلة للتطبيق أيضًا على الكائنات.

مجرد طريقة سريعة لكتابته مع الشرطة السفلية: _.without.apply (_، [x] .concat (y)) ، سيعيد مصفوفة من القيم في x بدون القيم في y.

تعمل إجابة rubenstolk إلا أنه لم يعلق على الكود الخاص به ، لذا تم تفسير

_.without.apply(_, [originalArray].concat(removeArray));

أعتقد أن Github لم يكن يفعل ذلك منذ عامينreggi!

بالنسبة لأولئك الذين يجدون طريقهم هنا .... _الفرق ([0 ، 1 ، 3 ، 9] ، [1 ، 3]) ؛ // => [0 ، 9]

من: http://stackoverflow.com/questions/5722254/underscore-js-is-there-a-function-that-produces-an-array-thats-the-difference

أعلم أن هذا مغلق ، لكن عامل انتشار ES6 سيساعد في ذلك ؛)

لأي شخص لا يريد البحث عن عامل انتشار ES6 الذي ذكره agwidarsito ، ما يقوله هو أنه يمكنك القيام بذلك في ES6:

const items = [1,2,3,4];
const itemsToRemove = [3,4,5];
const result = _.without(items, ...itemsToRemove);
// result is [1,2]

شكرا لكaddisonbgross!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

afranioce picture afranioce  ·  8تعليقات

umarfarooq125 picture umarfarooq125  ·  8تعليقات

danilopolani picture danilopolani  ·  5تعليقات

clouddueling picture clouddueling  ·  3تعليقات

arypbatista picture arypbatista  ·  3تعليقات