Значение счетчика в объекте js - PullRequest
0 голосов
/ 06 марта 2019

У меня есть объект, который приходит на событие

{ "Ann": true, "Billy": false, "Cat": false, "David": true }

Как подсчитать количество людей, которые посещают?

object.values.length для получения общего количества людей

Ответы [ 5 ]

1 голос
/ 06 марта 2019

object.values.length для получения общего числа людей

Фильтр out false Значения:

const obj = {"Ann": true, "Billy": false, "Cat": false,"David": true};
console.log(
  Object.values(obj).filter(Boolean).length
);

Если вы хотите получить имена присутствующих людей, вы можете сделать что-то вроде этого:

const obj = {"Ann": true, "Billy": false, "Cat": false,"David": true};

const attendees = Object.entries(obj)
  .filter(entry => entry[1])
  .map(entry => entry[0]);

console.log(attendees);
console.log(attendees.length);
1 голос
/ 06 марта 2019

Вы можете использовать Object.values ​​ и уменьшить

Здесь идея

  • Сначала получите все значения от объекта.
  • С помощью Reduce мы суммируем значения.

let obj = { "Ann": true, "Billy": false, "Cat": false, "David": true }

let count = Object.values(obj).reduce((op,inp) => op + inp , 0)

console.log(count)
0 голосов
/ 06 марта 2019

Вы можете посчитать логическое значение, которое приведено к числу.

var object = { Ann: true, Billy: false, Cat: false, David: true },
    count = Object.values(object).reduce((a, b) => a + b, 0);

console.log(count);
0 голосов
/ 06 марта 2019

Вы можете сделать это многими способами. Вот один с фильтром ...

let obj = { "Ann": true, "Billy": false, "Cat": false, "David": true }   
Object.values(obj).filter( person => person === true).length
0 голосов
/ 06 марта 2019

В современных условиях вы можете использовать цикл for-of для массива, возвращаемого Object.values:

let sum = 0;
for (const flag of Object.values(yourObject)) {
    if (flag) {
        ++sum;
    }
}

const yourObject = { "Ann": true, "Billy": false, "Cat": false, "David": true };
let sum = 0;
for (const flag of Object.values(yourObject)) {
    if (flag) {
        ++sum;
    }
}
console.log(sum);

или reduce на нем:

const sum = Object.values(yourObject).reduce((sum, flag) => sum + (flag ? 1 : 0), 0);

const yourObject = { "Ann": true, "Billy": false, "Cat": false, "David": true };
const sum = Object.values(yourObject).reduce((sum, flag) => sum + (flag ? 1 : 0), 0);
console.log(sum);

В более старых средах вы можете использовать for-in:

var sum = 0;
for (var key in yourObject) {
    if (yourObject[key]) {
        ++sum;
    }
}

var yourObject = { "Ann": true, "Billy": false, "Cat": false, "David": true };
var sum = 0;
for (var key in yourObject) {
    if (yourObject[key]) {
        ++sum;
    }
}
console.log(sum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...