Javascript 检查数组的每个元素是否在多个数组中

Javascript 检查数组的每个元素是否在多个数组中,javascript,arrays,Javascript,Arrays,我很难找到解决办法 假设有6个颜色数组,每个数组中有1-3种颜色,颜色可以重复: ['white', 'blue'] ['green', 'yellow'] ['black'] ['yellow', 'blue', 'pink'] ['orange', 'red'] ['brown', 'white'] 用户输入6种颜色,例如:白色、蓝色、粉色、黑色、橙色、黄色。假设每个数组只能选择一种颜色,如何检查所有这些颜色是否都是数组的一部分,以及是否可以选择所有颜色 我希望我的问题可以理解 编辑:重新

我很难找到解决办法

假设有6个颜色数组,每个数组中有1-3种颜色,颜色可以重复:

['white', 'blue']
['green', 'yellow']
['black']
['yellow', 'blue', 'pink']
['orange', 'red']
['brown', 'white']
用户输入6种颜色,例如:白色、蓝色、粉色、黑色、橙色、黄色。假设每个数组只能选择一种颜色,如何检查所有这些颜色是否都是数组的一部分,以及是否可以选择所有颜色

我希望我的问题可以理解

编辑:重新表述问题


有6个颜色数组,如上所示,用户必须从每个数组中选择1个。假设用户提交的顺序与数组的顺序不同,如何检查用户的输入是否正确。

这看起来像是一项递归作业(可能不是最有效但肯定是最简单的解决方案,如果数据如此之小,则无所谓):

请注意,它将同时改变
颜色
输入
数组(每次调用
检查
时,您必须复制它们)


实际上,这个问题和路径发现问题非常相似。这是一个暴力解决方案。

有什么想法吗?只有两个带
if
的嵌套循环?这是家庭作业吗?听起来像是家庭作业。问题是颜色是重复的,每个数组只能选择一种颜色。不,不是家庭作业。这是一个在线游戏,我只是用颜色来简化问题。6种输入颜色中的每一种都必须来自不同的数组。问题是,我该如何检查这是一个问题,所以问题是检查是否存在一组颜色数组,使得每一个颜色数组和输入都有一个元素?
var check = function(input, colors) {
    if (!input.length) {
        return true;
    }
    var input_color = input.pop();
    var ok = false;
    for (var i = 0; i < colors.length; i++) {
        var color = colors[i];
        if (!color) {
            break;
        }
        if (color.indexOf(input_color) !== -1) {
            colors.splice(i, 1);
            ok = check(input, colors);
            if (!ok) {
                colors.splice(i, 0, color);
            } else {
                break;
            }
        }
    }
    if (!ok) {
        input.push(input_color);
    }
    return ok;
};
var colors = [
  ['white', 'blue'],
  ['green', 'yellow'],
  ['black'],
  ['yellow', 'blue', 'pink'],
  ['orange', 'red'],
  ['brown', 'white']
];
check(['white', 'blue', 'pink', 'black', 'orange', 'yellow'], colors);