js Как проверить что каждое значение объекта true?

Рейтинг: 2Ответов: 3Опубликовано: 17.02.2023

Какой самый бысрый способ проверки, что у объекта КАЖДОЕ значение имеет значенее 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Принят

Если значения только булевые и всегда существуют, то можно обойтись простыми условиями используя 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) );

▲ 1

способ проверки, что у объекта КАЖДОЕ значение имеет значенее 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);

▲ 1

Вот ещё интересное решение нашел. В копилку

const myObject = {
  prop1: true,
  prop2: true,
  prop3: true,
};

const allValuesTrue = Object.values(myObject).every((value) => value === true);

console.log(allValuesTrue);