JavaScript:从Notion API嵌套数组中筛选name为commissions的属性
如何从Notion API返回的嵌套数组中筛选指定项
你需要从Notion API返回的resultsArray里,筛选出category.multi_select中包含name: "commissions"的项,之前用find没成功是因为没处理好嵌套的数组层级,下面是具体解决方法:
数据结构回顾
const resultsArray = [ { properties: {}, category: { id: "sdasd", multi_select: [ { id: "324234", name: "commissions" } ] } } ];
筛选方法
1. 筛选所有符合条件的项(用filter)
如果需要找出数组中所有满足条件的元素,用filter配合some遍历嵌套数组:
const filteredItems = resultsArray.filter(item => { // 先判断必要属性是否存在,避免报错 if (!item?.properties?.category?.multi_select) return false; // 检查multi_select里是否有name为"commissions"的项 return item.properties.category.multi_select.some(select => select.name === "commissions"); });
2. 只找第一个符合条件的项(用find)
如果只需要第一个匹配的元素,把filter换成find即可:
const foundItem = resultsArray.find(item => { if (!item?.properties?.category?.multi_select) return false; return item.properties.category.multi_select.some(select => select.name === "commissions"); });
代码说明
?.是可选链操作符,能避免因为某个属性不存在导致的报错some方法会检查嵌套的multi_select数组,只要有一个元素的name匹配目标值,就返回true- 外层用
filter会返回所有符合条件的数组项,用find只会返回第一个匹配项
内容的提问来源于stack exchange,提问作者Jan Peeter
相关产品推荐
相关产品推荐

