gpt4 book ai didi

javascript - 根据嵌套数组对象过滤对象

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

最近,我接受了一个面试,被拒绝了大约有10个问题。每个问题都有60秒。有一个问题出错了,但我很好奇为什么会这样。
我必须过滤那些给定 SearchValue 的对象匹配 list数组对象 name属性(property)。 search值(value)已经给出。
例如:

const SearchValue = 'event';
它是过滤数组,因为 list[0].name属性值与 event 匹配文本。
const res = [
{
id: 2,
name: 'Events',
list: [
{
id: 1,
name: 'Event Ticketing System',
slug: '/'
},
{
id: 2,
name: 'Events Management Software',
slug: '/'
}
]
}
];
name属性包含类似于 Online Translation Services 的值和 Spelling and Grammar Check等如果搜索值与 text 匹配然后保存那些过滤的对象和 console.log .数据集是这样的。
const listing = [
{
id: 1,
name: 'Language',
list: [
{
id: 1,
name: 'Online Translation Services',
slug: '/'
},
{
id: 2,
name: 'Spelling and Grammar Check',
slug: '/'
},
{
id: 3,
name: 'TEFL Courses',
slug: '/'
},
{
id: 4,
name: 'Language Learning',
slug: '/'
}
]
},
{
id: 2,
name: 'Events',
list: [
{
id: 1,
name: 'Event Ticketing System',
slug: '/'
},
{
id: 2,
name: 'Events Management Software',
slug: '/'
}
]
}
];
我的实现是这样的。

const SearchValue = 'event';

const listing = [{
id: 1,
name: 'Language',
list: [{
id: 1,
name: 'Online Translation Services',
slug: '/'
},
{
id: 2,
name: 'Spelling and Grammar Check',
slug: '/'
},
{
id: 3,
name: 'TEFL Courses',
slug: '/'
},
{
id: 4,
name: 'Language Learning',
slug: '/'
}
]
},
{
id: 2,
name: 'Events',
list: [{
id: 1,
name: 'Event Ticketing System',
slug: '/'
},
{
id: 2,
name: 'Events Management Software',
slug: '/'
}
]
}
];

const res = listing.filter(object => {
if (Array.isArray(object.list) && object.list.length > 0) {
return object.list.filter((item) => {
return item.name.toLowerCase().indexOf(SearchValue.toLowerCase()) !== -1;
});
}
});


console.log('Result Array', res);

如果有人能提供一个很好的解决方案,真的很感激。我也想知道这个逻辑有什么问题?

最佳答案

您可以使用 Array#filter 连同 Array#some 验证 list 中是否有任何元素每个对象的属性都包含其 name 中的搜索文本.

const listing = [ { id: 1, name: 'Language', list: [ { id: 1, name: 'Online Translation Services', slug: '/' }, { id: 2, name: 'Spelling and Grammar Check', slug: '/' }, { id: 3, name: 'TEFL Courses', slug: '/' }, { id: 4, name: 'Language Learning', slug: '/' } ] }, { id: 2, name: 'Events', list: [ { id: 1, name: 'Event Ticketing System', slug: '/' }, { id: 2, name: 'Events Management Software', slug: '/' } ] } ];
const SearchValue = 'event';
const res = listing.filter(({list})=>
list.some(({name})=>name.toLowerCase().includes(SearchValue.toLowerCase())));
console.log(res);

关于javascript - 根据嵌套数组对象过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63316100/

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