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

如何按条件过滤含嵌套对象的数组,筛选出status为online的服务项

错误原因

  • 你错误使用了Object.keys()方法:service.pm2_env.status本身就是字符串类型的状态值,不需要调用Object.keys()处理。Object.keys()的作用是接收一个对象作为入参,返回该对象所有可枚举属性的键名组成的数组,你传入字符串值会得到由字符串单字符索引组成的数组,比如Object.keys('online')返回["0","1","2","3","4","5"],这个数组和字符串'online'做全等判断永远返回false,所以过滤结果为空。

正确实现方案

直接读取service.pm2_env.status的属性值做判断即可,代码如下:

const statusList = [
  {
    "pid": 0,
    "name": "dailyScripts.job",
    "pm2_env": {
      "namespace": "default",
      "kill_retry_time": 100,
      "windowsHide": true,
      "username": "u4011",
      "treekill": true,
      "status": "stopped"
    },
    "pm_id": 0,
    "monit": {
      "memory": 0,
      "cpu": 0
    }
  },
  {
    "pid": 1,
    "name": "finn.job",
    "pm2_env": {
      "namespace": "default",
      "kill_retry_time": 100,
      "windowsHide": true,
      "username": "u3411",
      "treekill": true,
      "status": "online"
    },
    "pm_id": 1,
    "monit": {
      "memory": 0,
      "cpu": 1
    }
  }
]

const data = statusList.filter(service => service.pm2_env.status === 'online');
console.log(data, 'data');

执行后会输出仅包含status为online的服务项数组,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:02