Большинство ответов, похоже, пропустили ту часть о вашей логике, что c были немного неверными. Они скажут пустой, если только один элемент пуст. Это потому, что logi c равен !every > 0
Но переключение этого logi c на every <= 0
даст то, что вы хотите.
например.
В приведенном ниже примере будет возвращено true, true
для сломанной версии. Но true, false
для фиксированного.
var objectProp = {
property1: [],
property2: [],
};
var objectProp2 = {
property1: [],
property2: [],
property3: ['not empty']
};
function allIsEmptyBroken(objectProp) {
return (!Object.keys(objectProp).every(key => objectProp[key] && objectProp[key].length > 0));
}
function allIsEmptyFixed(objectProp) {
return (Object.keys(objectProp).every(key => objectProp[key] && objectProp[key].length <= 0));
}
console.log('allIsEmptyBroken');
console.log(allIsEmptyBroken(objectProp));
console.log(allIsEmptyBroken(objectProp2));
console.log('allIsEmptyFixed');
console.log(allIsEmptyFixed(objectProp));
console.log(allIsEmptyFixed(objectProp2));