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

如何根据对象属性名的前缀过滤对象数组

实现方案

以JavaScript为例,你可以通过数组过滤+属性名匹配的逻辑实现需求,代码如下:
首先定义原始数组:

const originalArr = [
  { a_1: 356 },
  { a_2: 348 },
  { b_1: 621 },
  { c_9: 311 },
  { b_8: 123 },
  { a_8: 787 }
];

封装通用过滤函数:

/**
 * 按对象属性前缀过滤数组
 * @param {Array} arr 待过滤的对象数组
 * @param {String} prefix 指定的属性名前缀
 * @returns 过滤后的新数组
 */
function filterByPropPrefix(arr, prefix) {
  return arr.filter(item => {
    const propList = Object.keys(item)
    // 单属性对象直接判断第一个属性即可
    return propList[0].startsWith(prefix)
  })
}

调用示例:

// 筛选属性以a开头的对象
const filteredResult = filterByPropPrefix(originalArr, 'a')
console.log(filteredResult)

特殊场景适配

如果数组中存在单个对象包含多个属性的情况,可以按需修改判断逻辑:

  • 只要对象内有至少1个属性符合前缀就保留:
return propList.some(prop => prop.startsWith(prefix))
  • 要求对象内所有属性都符合前缀才保留:
return propList.every(prop => prop.startsWith(prefix))

核心方法说明

  • Array.filter():遍历数组,返回所有满足判断条件的元素组成的新数组,不会修改原数组
  • Object.keys():传入对象,返回该对象所有可枚举属性的属性名数组
  • String.startsWith():判断字符串是否以指定前缀开头,默认区分大小写,如需忽略大小写可以将属性名和前缀统一转为小写后再判断:prop.toLowerCase().startsWith(prefix.toLowerCase())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:39:04