var cow = {a: 1, b: {}, c: []};
_.isEmpty(cow); // returns false
يعمل الخيار isEmpty بشكل جيد على الكائنات التي تحتوي على أرقام باعتبارها القيم الوحيدة "غير الفارغة"
_.isEmpty(cow.a); // returns true
ومع ذلك ، يعتبر الفرد k ، v لـ a: 1 فارغًا.
لقد قرأت المشكلات ولاحظت أن _.isEmpty في الأصل لم يكن مخصصًا للسلاسل ، لذلك قد يكون هذا مقصودًا. إذا لم يكن ذلك مقصودًا ، فلدي فرع يمكنني تقديم طلب سحب له.
حالة الاستخدام التي صادفتها كانت أفعل شيئًا كهذا
_.each(cow, function(v, k) {
if (_.isEmpty(v)) {
// do something with k because of v being empty
}
});
لذا ستُعامل البقرة أ مثل البقر ب والبقرة ج. يمكنني كتابة التعليمات البرمجية حوله ، لكنني أعتقد أنه سيكون أكثر إتقانًا إذا لم أضطر إلى ذلك (وإذا لم يكسر روح أو رؤية تسطير أسفل السطر)
نعم ، يتم تعريف _.isEmpty
فقط للكائنات والمصفوفات. يجب ألا تستخدمه على السلاسل أو الأرقام.
إذن ، ما البدائل التي يجب أن نستخدمها على الأرقام؟
jashkenas أوmichaelficarra: أي سبب خاص _.isNumber
لا يسمى مع في _.isEmpty
؟ (بنفس الطريقة يتم استخدام _.isArray
و _.isString
)
أي سبب لماذا يجب؟
نعم. أنا سعيد لأنك سألت :-)
لقد رأيت أن معظم الأشخاص يستخدمون _.isEmpty
حد كبير للتحقق مما إذا كانت هناك قيمة (أي قيمة) قد تم تخصيصها لمتغير معين. لقد رأيت العديد من المطورين يواجهون مشكلات بسبب هذا.
حتى الوثائق الرسمية تنص على "إرجاع صحيح إذا كان الكائن لا يحتوي على قيم" - ويجب أن يكون الرقم مؤهلاً كقيمة.
إذا كان هناك نوع من التضمين الأكبر في إجراء هذا التغيير الذي لا يمكنني رؤيته ، فسيكون اقتراحي الثاني الأفضل هو تحديث الوثائق لتوضيح أنه لا ينبغي استخدامها للأرقام :-)
لماذا قد ترغب في تمرير رقم إلى isEmpty
، بدلاً من مجرد التحقق مما إذا كان الرقم فارغًا؟
حتى الوثائق الرسمية تنص على "إرجاع صحيح إذا كان الكائن لا يحتوي على قيم"
حق تماما. في JavaScript ، الرقم (للأسف الشديد) ليس كائنًا.
من المنطقي أن يعني _.isEmpty(a)
"هل a
كائن فارغ؟" ، نوعًا ما إذا كانت العبارة: if obj == {}
تعمل على القيم وليس على المراجع. لذلك فإن القيم مثل الأرقام ستعيد خطأ وكذلك القيم الخالية وغير المعرفة.
مثال على تنفيذ _.isEmpty
قد يكون:
_.isEmpty = function(a) {
return _.isEqual(a, {}) || _.isEqual(a, []) || _.isEqual(a, '');
}
jashkenas ربما يرجع ذلك إلى أن كلمة "فارغ" في بعض اللغات الأخرى تحدد ما إذا كان المتغير فارغًا أم لا :) http://www.php.net/manual/en/function.empty.php
+1 لـ josser - غالبًا لأن لدي خلفية PHP :-p
لكنني أعتقد أن مجرد توضيح ذلك في الوثائق قد يكون كافياً. أرى بجدية أن الناس يواجهون هذا كل أسبوعين.
واجهت هذا اليوم .. كنت أستخدمه مع _.omit
_.omit(someObject, _.isEmpty);
التعليق الأكثر فائدة
نعم. أنا سعيد لأنك سألت :-)
لقد رأيت أن معظم الأشخاص يستخدمون
_.isEmpty
حد كبير للتحقق مما إذا كانت هناك قيمة (أي قيمة) قد تم تخصيصها لمتغير معين. لقد رأيت العديد من المطورين يواجهون مشكلات بسبب هذا.حتى الوثائق الرسمية تنص على "إرجاع صحيح إذا كان الكائن لا يحتوي على قيم" - ويجب أن يكون الرقم مؤهلاً كقيمة.
إذا كان هناك نوع من التضمين الأكبر في إجراء هذا التغيير الذي لا يمكنني رؤيته ، فسيكون اقتراحي الثاني الأفضل هو تحديث الوثائق لتوضيح أنه لا ينبغي استخدامها للأرقام :-)