Empty array after filter that shouldn't be empty

Viewed 28

This is my function

const filterPerBlocked = (showBlocked) => {
        const filtered_copy = [];
        filtered.forEach( (element) => {
            let composites_copy = element.composites.filter( (composite) => {
                composite.blocked == showBlocked
            })
            
            filtered_copy.push({
                category: _.cloneDeep(element.category),
                composites: composites_copy
            })
        });

        console.log(filtered_copy);
    }

Some elements inside the filter are giving true result on composite.blocked == showBlocked but composites_copy its always empty, shouldn't composites_copy contain the filtered result?

1 Answers

Your filter function is not returning anything. You should either add a return:

let composites_copy = element.composites.filter( (composite) => {
   return composite.blocked == showBlocked
})

or simplify to:

let composites_copy = element.composites.filter( 
  (composite) => composite.blocked == showBlocked
)
Related