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

如何使用startsWith过滤对象并获取符合条件的键对应值?

如何过滤对象获取以指定前缀开头的键值

你现在的代码已经正确筛选出了所有以checkpoint开头的键名,接下来只需要把这些键名映射成对应的键值就可以啦!

方法一:filter + map组合实现

在你现有筛选逻辑的基础上,新增map方法遍历筛选后的键名,从原对象中取出对应的值即可:

var data = { practicals: '0', checkpoint01: '0', checkpoint02: '0', checkpoint03: '0', checkpoint04: '0', checkpoint05: '0', checkpoint06: '0', checkpoint07: '0', checkpoint08: '0', checkpoint09: '0', checkpoint10: '0', total: '0' }
var res = Object.keys(data)
  .filter(v => v.startsWith('checkpoint'))
  .map(key => data[key]) // 新增这一步,将键名转换为对应键值
console.log(res)
// 输出:["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"]

方法二:Object.entries一步完成

如果想要更连贯的逻辑,可以直接用Object.entries获取对象的键值对数组,先过滤再提取值:

var data = { practicals: '0', checkpoint01: '0', checkpoint02: '0', checkpoint03: '0', checkpoint04: '0', checkpoint05: '0', checkpoint06: '0', checkpoint07: '0', checkpoint08: '0', checkpoint09: '0', checkpoint10: '0', total: '0' }
var res = Object.entries(data)
  .filter(([key]) => key.startsWith('checkpoint')) // 筛选符合前缀的键值对
  .map(([_, value]) => value) // 提取键值对中的值
console.log(res)

原代码只输出键名的原因

Object.keys(data)返回的是对象所有键名组成的数组,filter方法只是对键名进行筛选,并没有去关联原对象的键值,所以加上map步骤就能完成从键名到键值的转换啦。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:59:34