@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);
}
  • Вопрос задан
  • 84 просмотра
Решения вопроса 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 принято всегда писать с маленькой буквы (фиг знает почему, мне больше нравится майкрософтовский стиль, но принято так)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы