You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JavaScript对象字面量统计指定属性值的数量?

统计对象中值为"nursery"的孩子数量

嘿,我来帮你搞定这个问题!你的需求是统计对象里值为"nursery"的属性数量,先看看你之前的代码为什么没成功,再给你几个靠谱的实现方法。

你的代码问题分析

你写的这段代码:

var kkr = (kids.dipok).toString.length,count; if(kkr>=1){ ++count; console.log(count); }

有几个关键问题:

  • 只检查了kids.dipok这一个属性,没有遍历整个对象的所有属性,根本没法统计所有符合条件的项;
  • toString.length写法错误:toString是方法,调用需要加(),而且kids.dipok本身就是字符串,完全不需要转换;另外你判断的是字符串长度,而不是值是否等于"nursery",逻辑方向错了;
  • count变量没有初始化,默认是undefined,执行++count会得到NaN,结果肯定不对。

正确的实现方法

这里给你三种常用的实现方式,选你觉得顺手的就行:

方法1:传统for...in循环(兼容旧环境)

var kids = { dipok: "nursery", bonku: "LKG-1", jaya: "LKG-2", Raj_Kumar: "nursery" };
var count = 0;

// 遍历对象的每个属性键
for (var key in kids) {
  // 确保只统计对象自身的属性(避免继承的原型属性)
  if (kids.hasOwnProperty(key)) {
    // 判断当前属性值是否为"nursery"
    if (kids[key] === "nursery") {
      count++;
    }
  }
}

console.log(count); // 输出:2

方法2:ES6 Object.values() + filter(简洁直观)

如果你的运行环境支持ES6(比如现代浏览器、Node.js),这种写法更简洁:

var kids = { dipok: "nursery", bonku: "LKG-1", jaya: "LKG-2", Raj_Kumar: "nursery" };

// 获取对象所有值,过滤出等于"nursery"的项,再取长度
var count = Object.values(kids).filter(value => value === "nursery").length;

console.log(count); // 输出:2

方法3:ES6 reduce统计(灵活扩展)

如果以后需要更复杂的统计逻辑,reduce会更灵活:

var kids = { dipok: "nursery", bonku: "LKG-1", jaya: "LKG-2", Raj_Kumar: "nursery" };

// 累加符合条件的数量
var count = Object.values(kids).reduce((total, currentValue) => {
  return currentValue === "nursery" ? total + 1 : total;
}, 0); // 初始值设为0

console.log(count); // 输出:2

内容的提问来源于stack exchange,提问作者Aritra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:04:05