javascript - 基于另一个数组的嵌套过滤器数组
问题描述
我想过滤第二个数组,卡片,以便它只显示在 groups.cardsFilter 数组的第一个对象( id=1 )中的 cardsfFilter 数组中指定的记录
数组和所需的结果如下
const groups = [
{
id: 1,
name: 'Melbourne Bands',
//Below is the array that I need to act as the filter for the cards array
cardsFilter: [1, 2]
},
{
id: 2,
name: 'Sydney Bands',
cardsFilter: [3]
}
]
const cards = [
{
id: '1',
url: 'jimmyyukka.com',
name: 'Jimmy Yukka',
CreatedByUserId: 1
},
{
id: '2',
url: 'jimmyyukka.com',
name: 'Due North',
CreatedByUserId: 1
},
{
id: '3',
url: 'jimmyyukka.com',
name: 'INXS',
CreatedByUserId: 1
}
]
const desiredResult = [
{
id: '1',
url: 'jimmyyukka.com',
name: 'Jimmy Yukka',
CreatedByUserId: 1
},
{
id: '2',
url: 'jimmyyukka.com',
name: 'Due North',
CreatedByUserId: 1
},
]
我正在努力弄清楚并且找不到这种简单方法的堆栈溢出示例。
我已经尝试过(一条记录) 我不知道如何使用数组执行此操作
const notQuiteRight= cards.filter(function(getFile){
return getFile.id === "1"
});
解决方案
cardsFilter
从数组的第一个对象中提取属性groups
,然后在cards
数组上使用过滤器。
const groups = [{
id: 1,
name: 'Melbourne Bands',
//Below is the array that I need to act as the filter for the cards array
cardsFilter: [1, 2]
},
{
id: 2,
name: 'Sydney Bands',
cardsFilter: [3]
}
]
const cards = [{
id: '1',
url: 'jimmyyukka.com',
name: 'Jimmy Yukka',
CreatedByUserId: 1
},
{
id: '2',
url: 'jimmyyukka.com',
name: 'Due North',
CreatedByUserId: 1
},
{
id: '3',
url: 'jimmyyukka.com',
name: 'INXS',
CreatedByUserId: 1
}
]
const { cardsFilter } = groups[0];
const desiredOutput = cards.filter(({id}) => cardsFilter.includes(+id));
console.log(desiredOutput);
推荐阅读
- docker - Nginx-ingress helm 部署 - 默认后端仅适用于端口 8080
- sharepoint-2013 - 使用 pnp js 将文件夹包含从一个库中的文件复制到另一个库时的 CopyTo 功能问题
- android - 如何放大代码生成模型?
- ruby-on-rails - 我不能使用上下文 [:current_resource] graphql_devise
- node.js - Oauth 重定向到 accounts.google
- sparql - 如何使用 SPARQL 查询 wikidata 以找到符合特定条件且地理位置靠近另一个城市的地点
- linux - AWK 有条件地从文件中选择 FQDN 主机名
- c - STM32定时器自动重载预加载
- php - 在gridview yii2中循环数组以制作每一列
- hibernate - 如何使用 Hibernate 和 JPA 创建不包括父记录的自加入关联