Javascript 通过将嵌套特性与搜索项进行比较进行筛选
在我的typescript中,我想通过比较嵌套属性和搜索词来进行过滤。 例如:我有一个对象数组Javascript 通过将嵌套特性与搜索项进行比较进行筛选,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,在我的typescript中,我想通过比较嵌套属性和搜索词来进行过滤。 例如:我有一个对象数组 var array = [ { game: 'Cricket', team: ['Sally','Bob','John'], }, { game: 'Basketball', team: ['Linda', 'George'], } ] 如果我搜索“John”,那么结果应该是 [ {
var array = [
{
game: 'Cricket',
team: ['Sally','Bob','John'],
},
{
game: 'Basketball',
team: ['Linda', 'George'],
}
]
如果我搜索“John”,那么结果应该是
[
{
game: 'Cricket',
team: ['John']
}
]
请帮我找出解决办法。感谢您的支持。基于您的期望,以下内容应该有效: 使用reduce
类型游戏={
游戏:弦乐
团队:字符串[]
}
康斯特游戏=[
{
游戏:“板球”,
团队:[“萨利”、“鲍勃”、“约翰”]
},
{
游戏:“篮球”,
团队:[“琳达”、“乔治”]
}
]
常量筛选器字节成员=(游戏:游戏[],成员:字符串):游戏[]=>
游戏。减少(
(p,c)=>(c.团队包括(成员)?[…p,{…c,团队:[成员]}]:p),
[]
)
log(filterByTeamMember(游戏,'Linda'))
//输出
//[{比赛:'篮球',球队:['Linda']}]
使用平面图
const filterByTeamMember=(游戏:游戏[],成员:字符串):游戏[]=>
games.flatMap((game)=>(game.team.includes(member)?[{……game,team:[member]}]:[]))
据我所知。您想搜索前“john”作为团队成员的元素吗?
这里有一个快速解决方案,您可以根据自己的需要进行更改
const a=[{
游戏:“板球”,
团队:[“萨利”、“鲍勃”、“约翰”]
},
{
游戏:“篮球”,
团队:[“琳达”、“乔治”]
}
]
const target=“John”;
//这将通过检查当前元素是否符合条件来过滤数组,并返回元素
常数res=[];
a、 地图(el=>el.team.includes(目标)
?res.push({…el,团队:[target]})
:错
);
控制台日志(res)代码>您希望支持哪些其他搜索标准?你能写下你想要实现的函数的签名吗?serchByGame、searchByItem?此数组是否始终具有相同的结构?仅按项搜索,且数组始终具有相同的结构过滤后的团队的应为['Sally'、'Bob'、'John']
或只是['John']
?最初团队的数组长度约为10+,我只想显示['John'](例如,我在文本框中输入的字符串-例如John)谢谢,但是,结果应该只返回John-不是所有三个sally、bob、John你可以编辑结果数组的结构,我只演示了如何筛选OK。我已经使用了筛选,但没有得到预期的结果-它返回整个数组-这是我的问题谢谢Faycel Arab