gpt4 book ai didi

javascript - 根据列表属性与列表进行比较来过滤对象列表

转载 作者:行者123 更新时间:2023-12-02 01:42:07 29 4
gpt4 key购买 nike

我有以下格式的对象列表。

let information = [
{
data: {
list: [ 'item1', 'item4', 'item5'],
}
},
{
data: {
list: [ 'item100', 'item200', 'item300'],
}
},
{
data: {
list: [ 'item1', 'item2', 'item3'],
}
},
{
data: {
list: [ 'item70', 'item71', 'item300'],
}
}
]

我有一个来自另一个选择的动态列表,可能如下所示。

const dynamicList = ['item1', 'item71'];

我希望从与动态列表相比至少有 1 个匹配项的信息中过滤掉对象。

所以在上面的例子中,过滤后,我应该只剩下 3 个项目。
只有第二项既没有 item1 也没有 item71,因此剩下的 3 项是匹配的。

尝试进行以下过滤。

但结果是 4,所以没有过滤任何内容。第二个数据的列表中没有 item1。
为什么没有被过滤?请指教。谢谢。

console.log(information.length); // 4

information = information
.filter(info => info.data.list !== null)
.filter(info => info.data.list
.filter(item => dynamicList.includes(item)));

console.log(information.length); // still 4, should be 3

P.S:以上代码可以直接粘贴到浏览器控制台上进行尝试。

最佳答案

您可以使用 .some() 过滤列表中至少包含 dynamicList 一个元素的元素。 :

let information = [
{
data: {
list: [ 'item1', 'item4', 'item5'],
}
},
{
data: {
list: [ 'item100', 'item200', 'item300'],
}
},
{
data: {
list: [ 'item1', 'item2', 'item3'],
}
},
{
data: {
list: [ 'item70', 'item71', 'item300'],
}
}
];

const dynamicList = ['item1', 'item71'];

let filteredList = information.filter(info => info.data.list.some(el => dynamicList.includes(el)));

console.log(filteredList);

关于javascript - 根据列表属性与列表进行比较来过滤对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71483077/

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