计算布尔值的数量(JavaScript)

发布于 2025-02-05 11:32:23 字数 425 浏览 2 评论 0原文

让我的对象具有以下数据:

{
  mongoose: {
    name: "Starky",
    age: 3,
    playful: false
  },
  dog: {
    name: "Maks",
    age: 7,
    playful: false
  },
  parrot: {
    name: "Petty",
    age: 4,
    playful: true
  }
}

我如何计算布尔人的数量?
我知道我可以使用。reduce,但是我不明白如何正确使用它,为了尝试使用它,我只是得到了undefined

Let my object have the following data:

{
  mongoose: {
    name: "Starky",
    age: 3,
    playful: false
  },
  dog: {
    name: "Maks",
    age: 7,
    playful: false
  },
  parrot: {
    name: "Petty",
    age: 4,
    playful: true
  }
}

How can I count the number of booleans?
I know that I can use .reduce, but I didn’t understand exactly how to use it correctly, in an attempt to use it, I just got undefined.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

|煩躁 2025-02-12 11:32:23

这里,

var d = {
  mongoose: {
    name: "Starky",
    age: 3,
    playful: false
  },
  dog: {
    name: "Maks",
    age: 7,
    playful: false
  },
  parrot: {
    name: "Petty",
    age: 4,
    playful: true
  }
}
console.log('Data',d) //Console for data

function cc(){ //Create function
    let totalBool=0;
    let totalTrue=0;
    let totalFalse=0;
Object.keys(d).forEach((x)=>{
    let dd = Object.keys(d[x]);
    dd.forEach((y)=>{
        if(typeof(d[x][y])=='boolean')
            {totalBool++}
        if(d[x][y]==true)
            {totalTrue++}
        if(d[x][y]==false)
            {totalFalse++}
    })})
    console.log('TotalBool :',totalBool);
    console.log('TotalTrue :',totalTrue);
    console.log('TotalFalse :',totalFalse);}
console.log(cc()) // Console for know bool value

Here,

var d = {
  mongoose: {
    name: "Starky",
    age: 3,
    playful: false
  },
  dog: {
    name: "Maks",
    age: 7,
    playful: false
  },
  parrot: {
    name: "Petty",
    age: 4,
    playful: true
  }
}
console.log('Data',d) //Console for data

function cc(){ //Create function
    let totalBool=0;
    let totalTrue=0;
    let totalFalse=0;
Object.keys(d).forEach((x)=>{
    let dd = Object.keys(d[x]);
    dd.forEach((y)=>{
        if(typeof(d[x][y])=='boolean')
            {totalBool++}
        if(d[x][y]==true)
            {totalTrue++}
        if(d[x][y]==false)
            {totalFalse++}
    })})
    console.log('TotalBool :',totalBool);
    console.log('TotalTrue :',totalTrue);
    console.log('TotalFalse :',totalFalse);}
console.log(cc()) // Console for know bool value

月亮是我掰弯的 2025-02-12 11:32:23

您可以做类似的事情

来检查它是否是布尔值,我已经使用了!!=====

const countBoolean = data => Object
.entries(data)
.reduce((res, [k, v]) => {
  return res + Object.values(v).filter(value => value === !!value).length
}, 0)

const data = {
  mongoose: {
    name: "Starky",
    age: 3,
    playful: false
  },
  dog: {
    name: "Maks",
    age: 7,
    playful: false
  },
  parrot: {
    name: "Petty",
    age: 4,
    playful: true
  }
}

console.log(countBoolean(data))

you can do something like this

to check if it is a boolean I have used !! and ===

const countBoolean = data => Object
.entries(data)
.reduce((res, [k, v]) => {
  return res + Object.values(v).filter(value => value === !!value).length
}, 0)

const data = {
  mongoose: {
    name: "Starky",
    age: 3,
    playful: false
  },
  dog: {
    name: "Maks",
    age: 7,
    playful: false
  },
  parrot: {
    name: "Petty",
    age: 4,
    playful: true
  }
}

console.log(countBoolean(data))

似狗非友 2025-02-12 11:32:23

您可以使用两次以计算所有布尔值。

const 
  data = {
    mongoose: { name: "Starky", age: 3, playful: false },
    dog: { name: "Maks", age: 7, playful: false },
    parrot: { name: "Petty", age: 4, playful: true },
  },
  numBools = Object.values(data).reduce(
    (total, o) =>
      total + Object.values(o).reduce((t, v) => (typeof v === "boolean" ? t + 1 : t), 0),
    0
  );

console.log(numBools);

You can use Array.prototype.reduce twice to count all the boolean values.

const 
  data = {
    mongoose: { name: "Starky", age: 3, playful: false },
    dog: { name: "Maks", age: 7, playful: false },
    parrot: { name: "Petty", age: 4, playful: true },
  },
  numBools = Object.values(data).reduce(
    (total, o) =>
      total + Object.values(o).reduce((t, v) => (typeof v === "boolean" ? t + 1 : t), 0),
    0
  );

console.log(numBools);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文