gpt4 book ai didi

javascript - 如何返回属性与数组匹配的对象数组?

转载 作者:行者123 更新时间:2023-12-01 01:25:58 24 4
gpt4 key购买 nike

我有一个像这样的数组

array = [
{ name: "john", tag: ["tag1", "tag2"] },
{ name: "doe", tag: ["tag2"] },
{ name: "jane", tag: ["tag2", "tag3"] }
];

我想要获取一个新的对象数组,其中包含“tag2”和“tag3”,但不仅包含“tag2”或同时包含“tag1”和“tag2”。

结果应该是:

newArray = [{ name: "jane", tag: ["tag2", "tag3"] }];

我尝试使用此过程来做到这一点:

tags = ["tag2", "tag3"];
newArray = [];
tags.forEach(t => {
array.forEach(data => {
data.tag.forEach(item => {
if (item === t) {
newArray.push(data);
}
});
});
});

但我得到了所有的元素。

最佳答案

如果我理解正确的话,您想要搜索顶级数组,查找 tag 属性是与 ['tag2', 'tag3' 完全匹配的数组的所有项目]

您可以通过filtering来实现这一点您的数组基于上述条件。

这是一种方法:

 
const array = [
{
name: 'john',
tag: ['tag1', 'tag2']
},
{
name: 'doe',
tag: ['tag2']
},
{
name: 'jane',
tag: ['tag2', 'tag3']
}
];

const tagsToMatchOn = ['tag2', 'tag3'];

// find all elements who's tag property exactly matches
// the above tags (in presence, not necessarily in order)
const newArray = array.filter(item => (
item.tag.length === tagsToMatchOn.length &&
tagsToMatchOn.every(t => item.tag.includes(t))
));

console.log(newArray);

如果您想要查找 tag 属性是一个数组的所有项目,其中包括所有 ['tag2', 'tag3'] 但也可以包含其他标签,你可以尝试这样的事情:

const array = [
{
name: 'john',
tag: ['tag1', 'tag2']
},
{
name: 'doe',
tag: ['tag2']
},
{
name: 'jane',
tag: ['tag2', 'tag3']
}
];

const tagsToMatchOn = ['tag2', 'tag3'];

// find all elements who's tag property includes
// all of the above tags but can also contain others
const newArray = array.filter(item =>
tagsToMatchOn.every(t => item.tag.includes(t))
);

console.log(newArray);

关于javascript - 如何返回属性与数组匹配的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53800156/

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