تايب سكريبت - تحديد ما إذا كانت جميع السمات في كائن جافا سكريبت فارغة أو تحتوي على سلسلة فارغة


ما هي أكثر طريقة أنيقة لتحديد ما إذا كانت جميع السمات في كائن جافاسكريبت إما null أو سلسلة فارغة؟ يجب أن تعمل مع عدد عشوائي من السمات.

{'a':null, 'b':''} //should return true for this object
{'a':1, 'b':''} //should return false for this object
{'a':0, 'b':1} //should return false
{'a':'', 'b':''} //should return true

الإجابة رقم 1

تحقق من جميع القيم باستخدام Object.values. فهو يعيد مصفوفة بالقيم، والتي يمكنك التحقق منها باستخدام Array.prototype.every أو Array.prototype.some:

const isEmpty = Object.values(object).every(x => x === null || x === '');
const isEmpty = !Object.values(object).some(x => x !== null && x !== '');

الإجابة رقم 2

أنشئ دالة للتكرار والتحقق:

function checkProperties(obj) {
    for (var key in obj) {
        if (obj[key] !== null && obj[key] != "")
            return false;
    }
    return true;
}

var obj = {
    x: null,
    y: "",
    z: 1
}

checkProperties(obj) //returns false

الإجابة رقم 3

إليك نسختي، تتحقق خصيصًا من القيم الفارغة والسلاسل الفارغة (سيكون من الأسهل مجرد التحقق من القيم الزائفة)

function isEmptyObject(o) {
    return Object.keys(o).every(function(x) {
        return o[x]===''||o[x]===null;  // or just "return o[x];" for falsy values
    });
}

الإجابة رقم 4

let obj = { x: null, y: "hello", z: 1 };
let obj1 = { x: null, y: "", z: 0 };

!Object.values(obj).some(v => v);
// false

!Object.values(obj1).some(v => v);
// true

الإجابة رقم 5

حل سريع وبسيط:

Object.values(object).every(value => !!value);

الإجابة رقم 6

استخدام Array.some() والتحقق إذا كانت القيم ليست null وليست empty هو أكثر كفاءة من استخدام Array.every والتحقق بطريقة معاكسة.

const isEmpty = !Object.values(object).some(x => (x !== null && x !== ''));

يجب أن يجعل هذا الجواب تعليق المستخدم abd995 الممتاز أكثر ظهورًا.