Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在二维数组中查找比较_Javascript_Arrays_Compare_Shortcuts - Fatal编程技术网

Javascript 在二维数组中查找比较

Javascript 在二维数组中查找比较,javascript,arrays,compare,shortcuts,Javascript,Arrays,Compare,Shortcuts,我试图为javascript上的帖子列表创建快捷方式。 我有快捷方式和类别的帖子 我需要按快捷方式筛选帖子。 只有严格的比较: ['Boxer', 'Terrier'] !== ['Boxer', 'Terrier', 'Bulldog'] ['Boxer'] !== ['Boxer', 'Terrier', 'Bulldog'] ['Boxer', 'Terrier'] === ['Boxer', 'Terrier'] ['Boxer', 'Terrier'] === ['Terrie

我试图为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);
    }
});

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

JSON.stringify(['Boxer', 'Terrier']) === JSON.stringify(['Boxer', 'Terrier']);
JSON.stringify(shortcutSetOfCategory.sort())==JSON.stringify(postSetOfCategory.sort())
它正在工作!非常感谢你!