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

JS数组对象筛选问题:如何获取RSVP为true的宾客对象?

修正筛选RSVP为true嘉宾的函数问题

我来帮你修正这个函数,先说说你当前代码里的几个关键问题,再给出两种可行的实现方式:

原代码的核心问题

  • 函数参数里的id是多余的,你的需求是筛选rsvp: true的嘉宾,不需要根据id筛选
  • 循环时用了未定义的list,应该遍历传入的guests数组
  • 循环参数命名为id和外部参数重名,而且判断条件id.true完全错误,应该判断当前元素的rsvp属性是否为true
  • 没有初始化存储结果的数组,push.SelectGuests()是语法错误,正确的做法是先创建空数组,再把符合条件的元素push进去
  • 最后返回的selectGuests是函数本身,不是筛选后的结果数组

方法一:用forEach实现(适合理解基础逻辑)

function selectGuests(guests) {
  // 初始化空数组存储筛选结果
  const confirmedGuests = [];
  // 遍历传入的guests数组
  guests.forEach(function(guest) {
    // 判断当前嘉宾的rsvp是否为true
    if (guest.rsvp === true) {
      // 符合条件就加入结果数组
      confirmedGuests.push(guest);
    }
  });
  // 返回筛选后的数组
  return confirmedGuests;
}

// 调用测试
const guests = [ { id: 1, rsvp: true }, { id: 2, rsvp: false }, { id: 3, rsvp: true }, { id: 4, rsvp: false } ];
console.log(selectGuests(guests)); // 输出 [{ id: 1, rsvp: true }, { id: 3, rsvp: true }]

方法二:用数组filter方法(更简洁,推荐)

JavaScript数组内置了filter方法,专门用于筛选符合条件的元素,代码会更简洁易读:

function selectGuests(guests) {
  // filter会返回一个新数组,包含所有满足条件的元素
  return guests.filter(guest => guest.rsvp === true);
}

// 调用测试
const guests = [ { id: 1, rsvp: true }, { id: 2, rsvp: false }, { id: 3, rsvp: true }, { id: 4, rsvp: false } ];
console.log(selectGuests(guests)); // 输出 [{ id: 1, rsvp: true }, { id: 3, rsvp: true }]

补充:因为guest.rsvp本身就是布尔值,也可以简化判断条件为return guests.filter(guest => guest.rsvp);,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:02