在二维数组中查找比较

橙人

我正在尝试为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);
    }
});
拉杰什·维尔玛(Rajesh Verma)

我认为您可以使用JSON.stringify比较二维数组

JSON.stringify(['Boxer', 'Terrier']) === JSON.stringify(['Boxer', 'Terrier']);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章