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

JavaScript过滤对象数组时如何仅保留指定键值对

问题场景

我有一个如下定义的对象数组:

const myArr = [
  {k1: 1, k2: 1, k3: 3, k4: 4}, 
  {k1: 1, k2: 2, k3: 3, k4: 4}, 
  {k1: 1, k2: 2, k3: 3, k4: 4}, 
  {k1: 1, k2: 2, k3: 3, k4: 4}
]

当前我尝试对数组做过滤,不强制要求必须使用filter方法,现有过滤代码如下:

const filteredObj = myArr.filter(item => item.k2 === 1)

我希望最终返回的结果仅保留指定的单个键值对,预期输出效果为:

console.log(filteredObj) // => {k2: 1}
实现方法

你当前使用的filter方法会返回所有匹配条件的完整对象组成的数组,无法直接提取指定键,根据需求可以选择以下实现方式:

  • 单匹配项场景(确定数组中只有一个元素符合k2===1的条件)
    直接用find获取第一个匹配的元素,再提取需要的键构造新对象即可:
    // find返回第一个匹配的数组元素,结果不是数组
    const matched = myArr.find(item => item.k2 === 1)
    // 做空值兼容,避免没有匹配项时取属性报错
    const filteredObj = matched ? { k2: matched.k2 } : null
    console.log(filteredObj) // 输出 {k2: 1}
    
  • 多匹配项场景(如果数组中可能有多个元素符合条件)
    可以先过滤再通过map转换每个元素的结构,只保留需要的键:
    const filteredList = myArr
      .filter(item => item.k2 === 1)
      .map(item => ({ k2: item.k2 }))
    // 确定只有一个匹配项时直接取第一个元素即可
    const filteredObj = filteredList[0]
    console.log(filteredObj) // 输出 {k2: 1}
    

提示:如果后续需要保留多个指定键,只需要在构造返回对象时补充对应的属性即可,例如需要同时保留k1、k2两个键时,返回对象写为{ k1: item.k1, k2: item.k2 }即可。

内容的提问来源于stack exchange,提问作者Dylan L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:36:22