JS как подсчитать количество элементов объекта с указанными значениями

Подскажите, как подсчитать количество элементов объекта с указанными значениями. Для примера вот объект:

const bonusesStatus = {
  1: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  2: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  3: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",

  },
  4: {
    isAccess: false,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  5: {
    isAccess: false,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  }
}

let countElementsObj = Object.keys(bonusesStatus).length;
console.log("Всего элементов в объекте =", countElementsObj);
console.log("Эементов с значением isAccess===false  =")

Как подсчитать количество элементов с значением isAccess===false ?


Ответы (2 шт):

Автор решения: Bear Vorkuta

Через for in можно

const bonusesStatus = {
  1: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  2: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  3: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",

  },
  4: {
    isAccess: false,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  5: {
    isAccess: false,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  }
}

let count = 0

for (keys in bonusesStatus) {
    if (bonusesStatus[keys].isAccess === false) count++
}

let countElementsObj = Object.keys(bonusesStatus).length;
console.log("Всего элементов в объекте =", countElementsObj);
console.log("Эементов с значением isAccess===false  =",count)

→ Ссылка
Автор решения: zhurof

const bonusesStatus = {
  1: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  2: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  3: {
    isAccess: true,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",

  },
  4: {
    isAccess: false,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  },
  5: {
    isAccess: false,
    bonusesLastUpdate: "2021-05-15T15:04:23.000Z",
    bonusesNextAccess: "2021-05-15T15:04:23.000Z",
  }
}

let countElementsObj = Object.keys(bonusesStatus).length;
let noAccessCount = Object.values(bonusesStatus).filter(function(el){return el.isAccess === false}).length;
console.log("Всего элементов в объекте =", countElementsObj);
console.log("Эементов с значением isAccess===false  =", noAccessCount);

Тащемто можно записать и короче: Object.values(bonusesStatus).filter(el=>!el.isAccess).length

→ Ссылка