gpt4 book ai didi

Javascript用另一个元素数组过滤一个数组

转载 作者:行者123 更新时间:2023-11-30 06:25:18 27 4
gpt4 key购买 nike

我想为搜索实现一个标签过滤器,并获得一个包含许多条目的条目数组(变量:条目):

"entries":[
{
"id":1,
"details":"text",
"tags":[
{
"id":9,
"label":"Label9"
},
{
"id":6,
"label":"Label6"
},
],
"date":"Mar 8, 2018 2:45:30 PM"
}]

我想用另一个标签数组(变量:标签)过滤这个数组,如下所示:

"tags":[
{
"id":6,
"label":"Label6"
}

最后,我需要一个包含标签数组中所有标签的条目数组。 ]

我写了这段代码,但出了点问题。它比较每个标签的 ID。

const entries = [{
"id": 1,
"details": "text",
"tags": [{
"id": 9,
"label": "Label9"
},
{
"id": 6,
"label": "Label6"
},
],
"date": "Mar 8, 2018 2:45:30 PM"
}]



const tags = [{
"id": 6,
"label": "Label6"
}]


function containSearchTag(tags) {
return entries.filter(function(el) {
for (let i = 0; i < el.tags.length; i++) {
for (let j = 0; j < tags.length; j++) {
return el.tags[i].id === tags[j].id;
}
}
});
}
console.log(containSearchTag(tags));

最佳答案

你可以使用 Set并通过使用集合检查 tags 数组来过滤数组。

var entries = [{ id: 1, details: "text", tags: [{ id: 9, label: "Label9" }, { id: 6, label: "Label6" }], date: "Mar 8, 2018 2:45:30 PM" }],
tags = [{ id: 6, label: "Label6" }],
ids = new Set(tags.map(({ id }) => id)),
result = entries.filter(({ tags }) => tags.some(({ id }) => ids.has(id)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于Javascript用另一个元素数组过滤一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50833965/

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