Значение счетчика в объекте js

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

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

Как я могу посчитать количество присутствующих?

object.values.length, чтобы получить общее количество людей

корт?? Вы имеете в виду счет?

Studocwho 06.03.2019 19:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
1 206
5

Ответы 5

Вы можете использовать Объект.значения и уменьшать

Вот идея

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

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

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

console.info(count)

Не могли бы вы объяснить, что такое (op,inp)=>op+(+inp),0 ?

susu watari 06.03.2019 18:58

@susuwatari это функция стрелки с неявным возвратом. это просто добавляет значение к op и возвращает op. обратите внимание здесь (+inp) используется для преобразования boolean в digit

Code Maniac 06.03.2019 19:01

@susuwatari есть еще несколько способов преобразования логического значения в цифры, такие как Number или ~~boolean или + и т. д.

Code Maniac 06.03.2019 19:19

object.values.length to get the total number of people

Фильтр вне false значений:

const obj = {"Ann": true, "Billy": false, "Cat": false,"David": true};
console.info(
  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.info(attendees);
console.info(attendees.length);

На заметку: во втором примере я думаю, что reduce лучший вариант, чем использование фильтра и карты.

Code Maniac 06.03.2019 19:04

В современных средах вы можете использовать цикл 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.info(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.info(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.info(sum);

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

let obj = { "Ann": true, "Billy": false, "Cat": false, "David": true }   
Object.values(obj).filter( person => person === true).length

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

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

console.info(count);

почему проголосовали? кажется лучшим ответом, нет необходимости в приведении типов с использованием + добавление уже делает свою работу. +1 Однако нет необходимости передавать начальное значение, цикл начнется с 1 и примет 0 в качестве начального значения.

AZ_ 06.03.2019 19:14

Другие вопросы по теме