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

JavaScript中如何按指定键匹配条件筛选生成新数组对象

JavaScript按条件筛选对象属性生成新数组的实现

核心实现逻辑

  1. 先预处理arr2,筛选出所有c值为true的属性名,得到允许保留的字段列表
  2. 遍历arr1.data的每一个对象,仅保留列表中存在的属性,生成新对象组成最终数组

原代码问题说明

  • 没有按规则筛选要保留的属性,直接把完整的源对象push到结果数组
  • 嵌套循环中多次重复push同一个对象,导致结果数组元素重复
  • 混用map返回值和外部finals数组,逻辑混乱

完整可运行代码

var arr1 = {
    data:[
      {id:1, place: "IN", year: "2020", mode: "ON"},
      {id:3, place: "TH", year: "2022", mode: "OFF"},
      {id:5, place: "AU", year: "2025", mode: "ON"} 
    ]
};
var arr2=[
  {a: "place", c: true},
  {a: "year", c: true},
  {a: "mode", c: false},
]

// 第一步:筛选出需要保留的属性名
const allowKeys = arr2.filter(item => item.c).map(item => item.a)

// 第二步:遍历生成新数组
const result = arr1.data.map(item => {
  const newItem = {}
  allowKeys.forEach(key => {
    if (item.hasOwnProperty(key)) {
      newItem[key] = item[key]
    }
  })
  return newItem
})

console.log(result)

输出结果

[
  {place: "IN", year: "2020"},
  {place: "TH", year: "2022"},
  {place: "AU", year: "2025"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:57:02