js Как проверить что каждое значение объекта true?
Какой самый бысрый способ проверки, что у объекта КАЖДОЕ значение имеет значенее true или false ? Есть ли готовый метод ? Пример
let validationConditions = {
notEmptyName: false,
notEmptyEmail: false,
correctEmail: false,
notEmptyMessage: false,
validCapcha: true,
}
let validationConditions2 = {
notEmptyName: true,
notEmptyEmail: true,
correctEmail: true,
notEmptyMessage: true,
validCapcha: true,
}
const arrValidation = Object.values(validationConditions);
const arrValidation2 = Object.values(validationConditions2);
function checkValues(arr) {
if (arr.every("true")) {
console.log("Everything values TRUE")
} else {
console.log("No TRUE")
}
}
checkValues(arrValidation);
checkValues(arrValidation2);
что-то на подобии этого... только что б работало. А то every() тут не по функции фильтрует, а по string...
Ответы (3 шт):
Автор решения: ksa
→ Ссылка
способ проверки, что у объекта КАЖДОЕ значение имеет значенее true или false ?
Вот так можно проверять...
let validationConditions = {
notEmptyName: false,
notEmptyEmail: false,
correctEmail: false,
notEmptyMessage: false,
validCapcha: true,
}
let validationConditions2 = {
notEmptyName: true,
notEmptyEmail: true,
correctEmail: true,
notEmptyMessage: true,
validCapcha: true,
}
const arrValidation = Object.values(validationConditions);
const arrValidation2 = Object.values(validationConditions2);
function checkValues(arr, type = true) {
if (arr.every(v => v === type)) {
console.log("Everything values " + type)
} else {
console.log("No " + type)
}
}
checkValues(arrValidation, false);
checkValues(arrValidation2);
Еще вот так можно проверить...
let validationConditions = {
notEmptyName: false,
notEmptyEmail: false,
correctEmail: false,
notEmptyMessage: false,
validCapcha: true,
}
let validationConditions2 = {
notEmptyName: true,
notEmptyEmail: true,
correctEmail: true,
notEmptyMessage: true,
validCapcha: true,
}
const arrValidation = Object.values(validationConditions);
const arrValidation2 = Object.values(validationConditions2);
function checkValues(arr, type = true) {
const s = new Set(arr)
if (s.size === 1 && s.has(type)) {
console.log("Everything values " + type)
} else {
console.log("No " + type)
}
}
checkValues(arrValidation, false);
checkValues(arrValidation2);
Автор решения: UModeL
→ Ссылка
Если значения только булевые и всегда существуют, то можно обойтись простыми условиями используя includes() :
let validationConditions1 = {
notEmptyName: false,
notEmptyEmail: false,
correctEmail: false,
notEmptyMessage: false,
validCapcha: false
};
let validationConditions2 = {
notEmptyName: true,
notEmptyEmail: true,
correctEmail: true,
notEmptyMessage: true,
validCapcha: true
};
let validationConditions3 = {
notEmptyName: true,
notEmptyEmail: true,
correctEmail: true,
notEmptyMessage: false,
validCapcha: true
};
function checkValues(arr) {
if (arr.includes(true)) {
if (!arr.includes(false)) { console.log("Все значения TRUE") }
else { console.log("Смешанные значения") } }
else { console.log("Все значения FALSE") }
}
checkValues( Object.values(validationConditions1) );
checkValues( Object.values(validationConditions2) );
checkValues( Object.values(validationConditions3) );
Автор решения: BlackStar1991
→ Ссылка
Вот ещё интересное решение нашел. В копилку
const myObject = {
prop1: true,
prop2: true,
prop3: true,
};
const allValuesTrue = Object.values(myObject).every((value) => value === true);
console.log(allValuesTrue);