筛选并查找对象数组中的属性



这段代码正在工作,但我想使它与数组方法。过滤的条件是:如果programParent为空string ->必须通过,如果id等于某个程序parent ->必须通过。我试图使它与过滤方法和发现,但我需要一些帮助。提前谢谢。

let programsRes = [
{ id: '23', name: 'ventas', programParent: '' },
{ id: '24', name: 'ventas OUT Personal', programParent: '23' },
{ id: '25', name: 'ventas OUT Personal plus', programParent: '24' },
{ id: '26', name: 'ventas IN Hogares', programParent: '23' },
{ id: '27', name: 'Ad Hoc', programParent: '' },
{ id: '28', name: 'Ad Hoc asd', programParent: '27' },
{ id: '29', name: 'Ad Hoc 123', programParent: '27' },
{ id: '30', name: 'ventas IN Personal plus', programParent: '26' },
]   
let expected = [
{ id: '23', name: 'ventas', programParent: '' },
{ id: '24', name: 'ventas OUT Personal', programParent: '23' },
{ id: '26', name: 'ventas IN Hogares', programParent: '23' },
{ id: '27', name: 'Ad Hoc', programParent: '' },
]

let result = []
for (let i = 0; i < programsRes.length; i++) {
for (let j = 0; j < programsRes.length; j++) {
if (programsRes[i].programParent === '') {
result.push(programsRes[i])
break;
}
if (programsRes[i].id === programsRes[j].programParent) {         
result.push(programsRes[i])  
break;
}
}
}
console.log(result)

let programsRes = [
{ id: '23', name: 'ventas', programParent: '' },
{ id: '24', name: 'ventas OUT Personal', programParent: '23' },
{ id: '25', name: 'ventas OUT Personal plus', programParent: '24' },
{ id: '26', name: 'ventas IN Hogares', programParent: '23' },
{ id: '27', name: 'Ad Hoc', programParent: '' },
{ id: '28', name: 'Ad Hoc asd', programParent: '27' },
{ id: '29', name: 'Ad Hoc 123', programParent: '27' },
{ id: '30', name: 'ventas IN Personal plus', programParent: '26' },
];

let result = programsRes.filter(program => 
program.programParent === '' || 
programsRes.some(item => item.programParent === program.id));
console.log(result)

最新更新