@Sawayadi

Как посчитать ключи объекта у которых есть определенное значение поля?

Есть объект Permissions, в котором поля ключей равны "True" или "False".
Нужно сделать функцию которая считает ключи у которых значение равно "True".
Я пробовал через Object.values()(хотя мне кажется, что надо другое использовать), но не считает ключи.
Вот сам код:
let Permissions = {canView: "True", canEdit: "False", canPrint: "True"};
function Count() {
  let count = 0;
  for (let count of Object.values(Permissions)) {
    if (Permissions == "True")
    count++;
  }
  alert(count);
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 2
wapster92
@wapster92 Куратор тега JavaScript
let Permissions = {canView: "True", canEdit: "False", canPrint: "True"};

function countTrueKeys(obj) {
  let count = 0
  for(let key in obj) {
    if (obj[key] == 'True') {
      count ++
    }
  }
  return count
}

console.log(countTrueKeys(Permissions)) // 2
Ответ написан
Комментировать
@dimoff66
Кратко о себе: Я есть
Ваш код просто чемпион по количеству нелепостей, count используете и как счетчик и как переменную при итерации, сравниваете значение объекта Permissions со строкой зачем-то.

Верный код по вашему алгоритму:

let Permissions = {canView: "True", canEdit: "False", canPrint: "True"};
function Count() {
  let count = 0;
  for (let elem of Object.values(Permissions)) {
    if (elem === "True") count++;
  }
  alert(count);
}


Но проще

const Permissions = {canView: "True", canEdit: "False", canPrint: "True"};
const count = Object.values(Permissions).filter(v => v == "True").length
alert(count)


И переменные в js принято всегда писать с маленькой буквы (фиг знает почему, мне больше нравится майкрософтовский стиль, но принято так)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы