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

如何过滤数组对象指定属性,生成保留剩余属性的新数组

实现方案

你之前用filter()方法达不到预期是因为Array.filter()的作用是筛选数组中符合条件的元素,而非对单个元素内部的属性做裁剪,你需要的是遍历数组所有元素,对每个元素本身做属性过滤,使用Array.map()配合对象属性过滤逻辑即可实现需求。

动态排除属性(支持传入任意排除列表)

这个方案完全匹配你的需求,不需要硬编码要排除的属性,可直接传入动态的filterList使用:

const originalArray =[
  {id: 1, name:"jim", email:"jim@mail.com",age:20},
  {id: 1, name:"jom", email:"jom@mail.com",age:30}
]
const filterList = ["id","age"]

const newArray = originalArray.map(item => 
  Object.fromEntries(
    // 遍历对象的所有键值对,过滤掉排除列表中存在的属性
    Object.entries(item).filter(([key]) => !filterList.includes(key))
  )
)

其他可选写法

如果要排除的属性是固定的,也可以直接用解构赋值+剩余运算符实现,写法更简洁:

const newArray = originalArray.map(({id, age, ...rest}) => rest)

如果需要兼容不支持Object.fromEntries的旧环境,可以用reduce实现同等逻辑:

const newArray = originalArray.map(item => {
  return Object.keys(item).reduce((result, key) => {
    if (!filterList.includes(key)) {
      result[key] = item[key]
    }
    return result
  }, {})
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:24:01