JavaScript嵌套数组过滤:保留slides中指定name元素并重组
JavaScript嵌套数组过滤解决方案
给定如下嵌套结构的数组:
const slides = [ {title: 'one', status: 1, slides: [ {name: 'first', id: 1}, {name: 'second', id: 2}, {name: 'third', id: 3}, {name: 'fourth', id: 4}, ]}, {title: 'two', status: 1, slides: [ {name: 'all', id: 1} ]}, ]
需要过滤每个对象中嵌套的slides数组,仅保留name字段为'first'或'all'的元素,生成新数组。可以通过map结合filter实现,代码如下:
const allowedNames = new Set(['first', 'all']); const filteredSlides = slides.map(item => ({ ...item, slides: item.slides.filter(slide => allowedNames.has(slide.name)) })); console.log(filteredSlides);
代码说明
- 用
Set存储允许的名称,提升查询效率 map遍历外层数组,对每个元素创建新对象(避免修改原数组)- 解构原对象的所有属性,再重新赋值
slides字段,用filter筛选出符合条件的嵌套元素
执行后得到的结果即为需求中的目标数组:
const slides = [ {title: 'one', status: 1, slides: [ {name: 'first', id: 1}, ]}, {title: 'two', status: 1, slides: [ {name: 'all', id: 1} ]}, ]
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

