I have a JavaScript code to filter some divs with some buttons, but I don't really understand what this piece of code means.
c.matches(`.${filters.join('.')}`)
The full code of that part is:
sheets.forEach((c) => {
if (filters.length === 0 || c.matches(`.${filters.join('.')}`)) {
c.classList.remove('hidden');
} else {
c.classList.add('hidden');
}
});
CodePudding user response:
filters is an array of class names, and filters.join('.') will concatenate them all with . between them. The template literal will put . before this. So if filters is ['class1', 'class2', 'class3'], the resulting string will be .class1.class2.class3.
The Element.matches() method returns true if the element matches the given CSS selector. So in the above example, this is c.matches('.class1.class2.class3') if the element c has all 3 classes.
So what this code does is filter the sheets so that only the ones matching all the classes in the filter list are shown.
