Я пытаюсь создать ярлыки для списка сообщений на javascript.
У меня есть ярлык и сообщения с категориями.
Мне нужно отфильтровать сообщения по ярлыку.
Только строгое сравнение:
['Boxer', 'Terrier'] !== ['Boxer', 'Terrier', 'Bulldog']
['Boxer'] !== ['Boxer', 'Terrier', 'Bulldog']
['Boxer', 'Terrier'] === ['Boxer', 'Terrier']
['Boxer', 'Terrier'] === ['Terrier', 'Boxer']
['Boxer'] === ['Boxer']
Я пришел к этой опции, но думаю, что это код низкого качества:
var allPosts = [
{
categories: [
['cats'],
['Cymric', 'Persian']
],
id: 1,
title: 'Cats',
message: 'Cymric, Persian'
},
{
categories: [
['dogs'],
['Boxer', 'Terrier']
],
id: 2,
title: 'Dogs',
message: 'Boxer, Terrier'
},
...
]
var shortcutCategories = [
['dogs'],
['Boxer', 'Terrier']
]
var displayedPosts = [];
var displayedPostsId = [];
shortcutCategories.forEach(function (shortcutSetOfCategory) {
if (shortcutSetOfCategory.length > 1) {
var internalCompare = false;
allPosts.forEach(function (post) {
post.categories.forEach(function (postSetOfCategory) {
if (postSetOfCategory.length > 1) {
shortcutSetOfCategory.every(function (shortcutCategory) {
internalCompare = postSetOfCategory.includes(shortcutCategory);
return internalCompare;
});
if (!internalCompare) {
return;
}
displayedPostsId.push(post.id);
}
});
});
} else {
allPosts.forEach(function (post) {
post.categories.forEach(function (postSetOfCategory) {
if (postSetOfCategory.length === 1) {
if (shortcutSetOfCategory[0] === postSetOfCategory[0]) {
displayedPostsId.push(post.id);
}
}
});
});
}
});
allPosts.forEach(function (post) {
var count = 0;
displayedPostsId.forEach(function (id) {
if (id === post.id)
count++;
});
if (shortcutCategories.length === count) {
displayedPosts.push(post);
}
});