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

JS对象练习题:统计登录/高分用户、查找MERN栈开发者

关于是否需要使用Object.keys(obj)的说明

不是必须用这个方法。JS遍历普通对象有多种实现方案,除了Object.keys(),Object.values()、Object.entries()、for...in循环都能满足需求,不需要强制用某一个API,根据场景选最顺手的就行。比如这几道题不需要单独操作用户名键的场景下,用Object.values()直接取每个用户的属性对象遍历,代码会更简洁。


题目1:统计两类用户数量

需求是分别统计已登录用户数、积分大于等于50的用户数,实现代码如下:

// 初始化两个计数器
let loggedInCount = 0;
let pointsOver50Count = 0;

// 遍历所有用户的属性对象
for (const user of Object.values(users)) {
  if (user.isLoggedIn) loggedInCount++;
  if (user.points >= 50) pointsOver50Count++;
}

// 运行结果
// 已登录用户数:2(对应用户Brook、John)
// 积分≥50用户数:3(对应用户Asab、Brook、John)

题目2:筛选所有MERN栈开发者

首先明确MERN栈的四个核心必备技能:MongoDB、Express、React、Node,需要筛选出技能列表同时包含这四项的用户,实现代码如下:

// 定义MERN栈必备技能清单
const mernRequiredSkills = ['MongoDB', 'Express', 'React', 'Node'];
const mernDevelopers = [];

for (const [username, userInfo] of Object.entries(users)) {
  // 检查当前用户是否覆盖所有必备技能
  const isQualified = mernRequiredSkills.every(skill => userInfo.skills.includes(skill));
  if (isQualified) {
    mernDevelopers.push({
      username,
      ...userInfo
    });
  }
}

// 运行结果
// 符合要求的MERN开发者共2位:Asab、Paul
// 注意John的技能中是Node.js而非Node,不满足筛选条件

补充:不用Object静态方法的写法

如果还没熟悉Object.keys/values/entries系列API,用基础的for...in循环也能实现完全一样的效果,以统计登录用户数为例:

let loggedInCount = 0;
// for...in会遍历对象的所有可枚举键
for (const username in users) {
  // 通过键取到对应的用户对象再判断属性
  if (users[username].isLoggedIn) {
    loggedInCount++;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:18:26