gpt4 book ai didi

javascript - 匹配两个数组中的值并返回过滤数组的数组方法

转载 作者:行者123 更新时间:2023-11-28 12:14:03 26 4
gpt4 key购买 nike

我正在尝试确定需要使用 .filter 或 .some 的哪种组合来获取 MongoDB 集合中所需的数据。

首先,我有一个文档数组,如下所示:

let docs = [
{ _id: '5ba39a12179b771820413ad8',
branches:
[ { _id: '3nc26645121f0613be08167r', name: 'New York' },
{ _id: '3fc26645121f0613be08185d', name: 'Los Angeles' },
{ _id: '2hc26648121f0613be081862', name: 'Seattle' },
{ _id: '7jc2664a121f0613be081869', name: 'Chicago' },
{ _id: '7ju2664a121f0613be08186e', name: 'Charlotte' } ],
updatedAt: '2018-09-20T13:01:06.709Z',
createdAt: '2018-09-20T13:01:06.709Z' },
{ _id: '3ya39a12179b771820413af5',
branches:
[ { _id: '3nc26645121f0613be08167r', name: 'New York' },
{ _id: '5ac26645121f0613be08145d', name: 'Miami' },
{ _id: '5ac2664a121f0613be08154s', name: 'Sacramento' } ],
updatedAt: '2018-09-20T13:01:06.709Z',
createdAt: '2018-09-20T13:01:06.709Z'
},
{ _id: '2sa39a12179b771820413gy4',
branches:
[ { _id: '1rd26645121d5613be08167h', name: 'Denver' },
{ _id: '5ac2664a121f0613be08154s', name: 'Sacramento' } ],
updatedAt: '2018-09-20T13:01:06.709Z',
createdAt: '2018-09-20T13:01:06.709Z'
}
];

我有一个传入的用户值数组,它们是 ID,如下所示:

 let filterValues = ["5ac26645121f0613be08145d", "7ju2664a121f0613be08186e"];

现在我要编写的是一个查询,该查询将返回一个新的 docs 数组,该数组仅包含与 filterValues 数组中的 ID 匹配的文档在每个文档根部的 branches 属性(这是一个数组)中找到的 ID。

在我在这里提供的示例中,生成的数组应包含原始 docs 数组中 3 个文档中的 2 个 - 具体来说,前两个文档,因为它们都至少包含一个在各自的 branches 数组中传递的 ID 的数量 - 从我的文档数据分配给夏洛特和迈阿密的 ID。

有没有办法可以使用 .filter.includes.some 或某种组合来编写此内容?

需要明确的是,最终的过滤结果应如下所示:

 [
{ _id: '5ba39a12179b771820413ad8',
branches:
[ { _id: '3nc26645121f0613be08167r', name: 'New York' },
{ _id: '3fc26645121f0613be08185d', name: 'Los Angeles' },
{ _id: '2hc26648121f0613be081862', name: 'Seattle' },
{ _id: '7jc2664a121f0613be081869', name: 'Chicago' },
{ _id: '7ju2664a121f0613be08186e', name: 'Charlotte' } ],
updatedAt: '2018-09-20T13:01:06.709Z',
createdAt: '2018-09-20T13:01:06.709Z' },
{ _id: '3ya39a12179b771820413af5',
branches:
[ { _id: '3nc26645121f0613be08167r', name: 'New York' },
{ _id: '5ac26645121f0613be08145d', name: 'Miami' },
{ _id: '5ac2664a121f0613be08154s', name: 'Sacramento' } ],
updatedAt: '2018-09-20T13:01:06.709Z',
createdAt: '2018-09-20T13:01:06.709Z'
}
];

最佳答案

 const result =  array.filter(({ branches }) => branches.some(({ _id }) => filterValues.includes(_id)))

如果你只做你认为你想做的事情怎么样?

关于javascript - 匹配两个数组中的值并返回过滤数组的数组方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com