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

按对象字段过滤数组并生成新数组:基于company字段过滤cards数组

解决数组过滤与字段提取的问题

没问题,这就帮你搞定这个数组过滤和字段提取的需求!针对你给出的data结构,我们可以分步骤实现筛选company为Symu.co的数据,并生成仅包含该字段的新数组。

方法一:提取所有符合条件的卡片并生成目标数组

首先我们需要把所有分散在不同lane里的cards合并成一个一维数组,再筛选出符合条件的卡片,最后提取需要的字段:

const data = {
  lanes: [
    {
      id: 'lane1',
      header: 'Quened',
      label: '',
      cards: [
        {id: 'Task1', title: 'Wordpress theme', company: 'Symu.co', price: 1500, user: 'michelle'},
      ]
    },
    {
      id: 'lane2',
      header: 'Planning',
      label: '',
      cards: [
        {id: 'Task2', title: 'Landing page', company: 'Google', price: 1500, user: 'jolene'},
        {id: 'Task3', title: 'New website', company: 'Symu.co', price: 1500, user: 'lyall'}
      ]
    }
  ]
};

// 1. 扁平化所有cards数组 + 筛选company为Symu.co的卡片
const filteredCards = data.lanes.flatMap(lane => lane.cards).filter(card => card.company === 'Symu.co');

// 2. 生成仅包含company字段值的数组(纯字符串数组)
const companyValueArray = filteredCards.map(card => card.company);
console.log(companyValueArray); // 输出: ['Symu.co', 'Symu.co']

// 或者生成仅包含company字段的对象数组
const companyObjectArray = filteredCards.map(card => ({ company: card.company }));
console.log(companyObjectArray); // 输出: [{company: 'Symu.co'}, {company: 'Symu.co'}]

代码解释

  • flatMap(lane => lane.cards):把每个lane里的cards数组合并成一个一维数组,避免嵌套遍历的麻烦。
  • filter(card => card.company === 'Symu.co'):精准筛选出company字段匹配目标值的卡片对象。
  • map方法:根据你的需求生成两种不同形式的数组——纯字段值数组,或者只保留目标字段的对象数组。

方法二:保留原有的lane层级结构

如果你需要保留原有的lane层级,只过滤每个lane内符合条件的cards,可以用下面的写法:

const lanesWithFilteredCards = data.lanes
  .map(lane => ({
    ...lane, // 复制lane的原有属性
    cards: lane.cards.filter(card => card.company === 'Symu.co') // 替换为过滤后的cards
  }))
  .filter(lane => lane.cards.length > 0); // 可选:移除没有符合条件卡片的lane

console.log(lanesWithFilteredCards);

这个方法会保留lane的其他属性(比如id、header),只更新cards为筛选后的结果,最后还可以过滤掉没有有效卡片的lane。

内容的提问来源于stack exchange,提问作者Вова Магдич

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:15:49