mirror of
https://github.com/10h30/astroplate.git
synced 2026-07-11 18:56:06 +09:00
38 lines
940 B
TypeScript
38 lines
940 B
TypeScript
// similar products
|
|
const similarItems = (currentItem: any, allItems: any[]) => {
|
|
let categories: string[] = [];
|
|
let tags: string[] = [];
|
|
|
|
// set categories
|
|
if (currentItem.data.categories.length > 0) {
|
|
categories = currentItem.data.categories;
|
|
}
|
|
|
|
// set tags
|
|
if (currentItem.data.tags.length > 0) {
|
|
tags = currentItem.data.tags;
|
|
}
|
|
|
|
// filter by categories
|
|
const filterByCategories = allItems.filter((item: any) =>
|
|
categories.find((category) => item.data.categories.includes(category)),
|
|
);
|
|
|
|
// filter by tags
|
|
const filterByTags = allItems.filter((item: any) =>
|
|
tags.find((tag) => item.data.tags.includes(tag)),
|
|
);
|
|
|
|
// merged after filter
|
|
const mergedItems = [...new Set([...filterByCategories, ...filterByTags])];
|
|
|
|
// filter by slug
|
|
const filterBySlug = mergedItems.filter(
|
|
(product) => product.slug !== currentItem.slug,
|
|
);
|
|
|
|
return filterBySlug;
|
|
};
|
|
|
|
export default similarItems;
|