Skip to content Skip to sidebar Skip to footer

How To Include The Entire Length Of Arrays?

Below I created this filter method to only display what's found within the fullDetails array. I apologize if this question is unclear and if I'm using the wrong terminology. Right

Solution 1:

If your filter is supposed to keep items whose fullDetails array contains this.state.searchItems (case-insensitive), you're looking for the some method of arrays:

let lc = this.state.searchItems.toLowerCase(); // Do this oncelet modItemList = this.props.items.filter(
    (item) => item.fullDetails.some(e => e.toLowerCase().indexOf(lc) !== -1)
);

some calls its callback for each entry in the array, stopping and returning true if the callback returns a truthy value (if it never does, some returns false).

Instead of indexOf, you could also use includes (ES2015, like let and arrow functions):

let lc = this.state.searchItems.toLowerCase(); // Do this oncelet modItemList = this.props.items.filter(
    (item) => item.fullDetails.some(e => e.toLowerCase().includes(lc))
);

Solution 2:

You can use every to check if every element matches.

let modItemList = this.props.items.filter(
    (item) => {
        return item.fullDetails.every(fullDetail => fullDetail.toLowerCase().indexOf(this.state.searchItems.toLowerCase()) !== -1);
    }
);

However, the plural in searchItems indicates that this could be an array either - so maybe you need to flip/enhance the logic here.

Post a Comment for "How To Include The Entire Length Of Arrays?"